論mysql5.7.13性能優(yōu)化之索引優(yōu)化
mysql優(yōu)化(1)show命令 慢查詢?nèi)罩?explain profiling
mysql優(yōu)化(2)索引優(yōu)化 配置優(yōu)化
源碼 360云盤 (提取碼:8d71)
一萧求、 UUID(全局唯一ID)
去 https://packagist.org/搜索uuid
軟件包名:
ramsey/uuid
安裝
composer require ramsey/uuid
使用:
<?php
require 'vendor/autoload.php';
use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
try {
// Generate a version 1 (time-based) UUID object
$uuid1 = Uuid::uuid1();
echo $uuid1->toString() . "\n"; // i.e. e4eaaaf2-d142-11e1-b3e4-080027620cdd
// Generate a version 3 (name-based and hashed with MD5) UUID object
$uuid3 = Uuid::uuid3(Uuid::NAMESPACE_DNS, 'php.net');
echo $uuid3->toString() . "\n"; // i.e. 11a38b9a-b3da-360f-9353-a5a725514269
// Generate a version 4 (random) UUID object
$uuid4 = Uuid::uuid4();
echo $uuid4->toString() . "\n"; // i.e. 25769c6c-d34d-4bfe-ba98-e0ee856f3e7a
// Generate a version 5 (name-based and hashed with SHA1) UUID object
$uuid5 = Uuid::uuid5(Uuid::NAMESPACE_DNS, 'php.net');
echo $uuid5->toString() . "\n"; // i.e. c4a760a8-dbcf-5254-a0d9-6a4474bd1b62
} catch (UnsatisfiedDependencyException $e) {
// Some dependency was not met. Either the method cannot be called on a
// 32-bit system, or it can, but it relies on Moontoast\Math to be present.
echo 'Caught exception: ' . $e->getMessage() . "\n";
}
二、 分詞字典
可以自行百度下載php分詞字典顶瞒!
https://yunpan.cn/ckQ6adR7zRRfY (提取碼:69b8)
三夸政、 MySQL全文索引(解決全文索引查詢關(guān)鍵詞最小長度限制)
說明:
- MySQL MyISAM的fulltext全文索引默認(rèn)支持英語單詞,由空格分詞搁拙,查詢關(guān)鍵詞最小長度是4個字符秒梳。
- 利用空格可以對中文進(jìn)行分詞法绵!
SELECT * FROM 表名 WHERE MATCH(全文索引字段) AGAINST(‘查詢單詞’ IN Boolean Mode);
分表:將一個大的數(shù)據(jù)表水平分割成32張表,利用UUID均勻插入32張表中;
原理:UUID生成32位16進(jìn)制字符串,取前兩位與32取余酪碘,得到的值拼接到表名的后面朋譬。
UUID: e564e388-7589-4484-a51a-9522259f751e
前兩位:e5
echo 0xe5 % 32;//5 則表的名稱:表名_5
其中:0x代表處進(jìn)制。
注意:
- MySQL中不要使用多表連查(會產(chǎn)生笛卡爾乘積)當(dāng)數(shù)據(jù)量大的時候嚴(yán)重影響性能兴垦。
- MySQL中不要使用like查詢徙赢,因為它不會使用到索引!
參考 http://www.bubufx.com/detail-1351689.html
一探越、設(shè)置條件
1.表的存儲引擎是MyISAM狡赐,默認(rèn)存儲引擎InnoDB不支持全文索引
(新版本MYSQL5.6的InnoDB支持全文索引)
2.字段類型:char
、varchar
和text
二钦幔、配置MySQL配置文件
MySQL全文索引查詢關(guān)鍵詞最小長度限制
[mysqld]
innodb_ft_min_token_size=1 /*這個是才是InnoDB引擎的全文索引最小長度設(shè)置*/
ft_min_word_len=1 /*MyISAM引擎的*/
保存后重啟MYSQL枕屉,執(zhí)行SQL語句
SHOW VARIABLES like '%ft%';
查看ft_min_word_len是否設(shè)置成功
注:重新設(shè)置配置后,已經(jīng)設(shè)置的索引需要重新設(shè)置生成索引
三鲤氢、創(chuàng)建表搀擂、插入數(shù)據(jù)
- 建表SQL語句:
//創(chuàng)建文章表
CREATE TABLE `article_0` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uuid` char(64) NOT NULL,
`content` text NOT NULL,
`addtime` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
//創(chuàng)建文章關(guān)鍵詞表
CREATE TABLE `article_index` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uuid` char(64) NOT NULL,
`keywords` text NOT NULL,
`addtime` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `uuid_index` (`uuid`),
FULLTEXT KEY `keywords_index` (`keywords`)
) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=utf8;
- 插入數(shù)據(jù)
insert into article_0 (uuid, content, addtime) values('e564e388-7589-4484-a51a-9522259f751e', '首次見面,沈從文便請蕭乾到東安市場的小館中吃飯卷玉,沈從文手寫菜名后哨颂,蕭乾欲收藏,對伙計說:這個菜單給我吧相种,我再給您抄一遍威恼。沈從文則說:“要菜單干嗎?以后我會給你寫信寝并,寫很長的信箫措。”', '1473782670');
insert into article_index (uuid, keywords, addtime) values('e564e388-7589-4484-a51a-9522259f751e', '菜單 見面 市場 吃飯 手寫 收藏 這個 以后 我會 寫信', '1473782670')
- 全文索引-關(guān)鍵詞查詢
SELECT * FROM article_index WHERE MATCH (keywords) AGAINST ('見面' in Boolean Mode);
+----+--------------------------------------+-----------------------------------------------------------------------+------------+
| id | uuid | keywords | addtime |
+----+--------------------------------------+-----------------------------------------------------------------------+------------+
| 2 | 2600d27c-ba84-4f1d-ac97-b2656ed5bcfd | 菜單 見面 市場 吃飯 手寫 收藏 這個 以后 我會 寫信 | 1473782670 |
| 7 | 5ca114fa-cb08-4293-87a4-c4abbb80b965 | 菜單 見面 市場 吃飯 手寫 收藏 這個 以后 我會 寫信 | 1473782670 |
| 13 | e564e388-7589-4484-a51a-9522259f751e | 菜單 見面 市場 吃飯 手寫 收藏 這個 以后 我會 寫信 | 1473782670 |
+----+--------------------------------------+-----------------------------------------------------------------------+------------+