新聞中心
MySQL數(shù)據(jù)庫中,恰到好處的使用索引可以大大地提高M(jìn)ySQL查詢的速度。但是什么時(shí)候適合用索引呢?什么時(shí)候又不適合呢?本文我們對(duì)MySQL數(shù)據(jù)庫什么時(shí)候使用索引以及什么時(shí)候不用索引進(jìn)行了總結(jié),接下來我們就開始介紹這一部分內(nèi)容。

MySQL何時(shí)使用索引
對(duì)一個(gè)鍵碼使用>, >=, =, <, <=, IF NULL和BETWEEN
- SELECT * FROM table_name WHERE key_part1=1 and key_part2 > 5;
- SELECT * FROM table_name WHERE key_part1 IS NULL;
當(dāng)使用不以通配符開始的LIKE
- SELECT * FROM table_name WHERE key_part1 LIKE 'jani%'
在進(jìn)行聯(lián)結(jié)時(shí)從另一個(gè)表中提取行時(shí)
- SELECT * from t1,t2 where t1.col=t2.key_part
找出指定索引的MAX()或MIN()值
- SELECT MIN(key_part2),MAX(key_part2) FROM table_name where key_part1=10
一個(gè)鍵碼的前綴使用ORDER BY或GROUP BY
- SELECT * FROM foo ORDER BY key_part1,key_part2,key_part3
在所有用在查詢中的列是鍵碼的一部分時(shí)間
- SELECT key_part3 FROM table_name WHERE key_part1=1
MySQL何時(shí)不使用索引
如果MySQL能估計(jì)出它將可能比掃描整張表還要快時(shí),則不使用索引。例如如果key_part1均勻分布在1和100之間,下列查詢中使用索引就不是很好:
- SELECT * FROM table_name where key_part1 > 1 and key_part1 < 90
如果使用HEAP表且不用=搜索所有鍵碼部分。
在HEAP表上使用ORDER BY。
如果不是用鍵碼***部分
- SELECT * FROM table_name WHERE key_part2=1
如果使用以一個(gè)通配符開始的LIKE
- SELECT * FROM table_name WHERE key_part1 LIKE '%jani%'
搜索一個(gè)索引而在另一個(gè)索引上做ORDER BY
- SELECT * from table_name WHERE key_part1 = # ORDER BY key2
關(guān)于MySQL數(shù)據(jù)庫使用索引與不使用索引的情況的總結(jié)就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】
- MySQL使用Amoeba作為Proxy時(shí)的注意事項(xiàng)
- MySQL數(shù)據(jù)庫binlog記錄的時(shí)間戳失序的原因
- MySQL數(shù)據(jù)庫目錄結(jié)構(gòu)及常用命令的使用總結(jié)篇
- 以MySQL為例介紹數(shù)據(jù)庫測試工具dbmonster的使用
- MySQL數(shù)據(jù)庫如何刪除表中部分關(guān)鍵字段重復(fù)的記錄
文章題目:MySQL數(shù)據(jù)庫如何恰到好處地使用索引?
當(dāng)前鏈接:http://fisionsoft.com.cn/article/cdcegjs.html


咨詢
建站咨詢
