工具:mysql數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)user的表里邊的字段
玉環(huán)ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
1.普通索引 添加INDEX
ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
下面演示下給user表的name字段添加一個(gè)索引
2.主鍵索引 添加PRIMARY KEY
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
3.唯一索引 添加UNIQUE
ALTER TABLE `table_name` ADD UNIQUE ( `column` )
4.全文索引 添加FULLTEXT
ALTER TABLE `table_name` ADD FULLTEXT ( `column`)
5.如何添加多列索引
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
mysql 如何給SQL添加索引
1.添加PRIMARY KEY(主鍵索引)
alter table `table_name` add primary key(`column`);
2.添加UNIQUE(唯一索引)
alter table `table_name` add unique(`column`);
3.添加普通索引
alter table `table_name` add index index_name(`column`);
4.添加全文索引
alter table `table_name` add fulltext(`column`);
5.添加多列索引
alter table `table_name` add index index_name(`column1`,`column2`,`column3`);
索引是滿足某種特定查找算法的數(shù)據(jù)結(jié)構(gòu),而這些數(shù)據(jù)結(jié)構(gòu)會(huì)以某種方式指向數(shù)據(jù),從而實(shí)現(xiàn)高效查找數(shù)據(jù)。
具體來(lái)說(shuō) MySQL 中的索引,不同的數(shù)據(jù)引擎實(shí)現(xiàn)有所不同,但目前主流的數(shù)據(jù)庫(kù)引擎的索引都是 B+ 樹實(shí)現(xiàn)的,B+ 樹的搜索效率,可以到達(dá)二分法的性能,找到數(shù)據(jù)區(qū)域之后就找到了完整的數(shù)據(jù)結(jié)構(gòu)了,所有索引的性能也是更好的。
一共3張表 knowledge , knowledge_question , knowledge_answer ,數(shù)據(jù)在 6000~10000 之間。
執(zhí)行的語(yǔ)句:
執(zhí)行時(shí)間約 10分鐘 ,查看執(zhí)行計(jì)劃如下:
全部都是全表掃描,根據(jù)MySQL聯(lián)表查詢的算法 Nested-Loop Join ,MySQL查詢的結(jié)果集是3張表的笛卡爾積,所以效率特別低。
耗時(shí)變成 20毫秒
給Where條件建立索引,并不一定會(huì)使用。
比如:在表 knowledge 的字段 update 上建立索引 idx_time :
結(jié)果執(zhí)行上來(lái)看,并沒(méi)有使用索引 idx_time 。
如果where條件從 k.update_time'2019-01-03 12:00:00' 修改為 k.update_time='2019-01-03 12:00:00' (從 變成 = )
則會(huì)使用索引 idx_time
在建立索引的時(shí)候,會(huì)遇到 Table Metadata Lock 的問(wèn)題,可以先 show processlist ,找到占用表鎖的連接,然后 kill 。