久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Mysql中SQL語句不使用索引的示例分析

205次閱讀
沒有評論

共計 1556 個字符,預計需要花費 4 分鐘才能閱讀完成。

丸趣 TV 小編給大家分享一下 Mysql 中 SQL 語句不使用索引的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

MySQL 查詢不使用索引匯總

眾所周知,增加索引是提高查詢速度的有效途徑,但是很多時候,即使增加了索引,查詢仍然不使用索引,這種情況嚴重影響性能,這里就簡單總結幾條 MySQL 不使用索引的情況

如果 MySQL 估計使用索引比全表掃描更慢,則不使用索引。例如,如果列 key 均勻分布在 1 和 100 之間,下面的查詢使用索引就不是很好:select * from table_name where key 1 and key

如果使用 MEMORY/HEAP 表,并且 where 條件中不使用“=”進行索引列,那么不會用到索引,head 表只有在“=”的條件下才會使用索引

用 or 分隔開的條件,如果 or 前的條件中的列有索引,而后面的列沒有索引,那么涉及到的索引都不會被用到,例如:select * from table_name where key1= a or key2= b 如果在 key1 上有索引而在 key2 上沒有索引,則該查詢也不會走索引

復合索引,如果索引列不是復合索引的第一部分,則不使用索引(即不符合最左前綴),例如,復合索引為 (key1,key2), 則查詢 select * from table_name where key2= b 將不會使用索引

如果 like 是以‘% 開始的,則該列上的索引不會被使用。例如 select * from table_name where key1 like %a;該查詢即使 key1 上存在索引,也不會被使用

如果列為字符串,則 where 條件中必須將字符常量值加引號,否則即使該列上存在索引,也不會被使用。例如,select * from table_name where key1=1; 如果 key1 列保存的是字符串,即使 key1 上有索引,也不會被使用。

從上面可以看出,即使我們建立了索引,也不一定會被使用,那么我們如何知道我們索引的使用情況呢??在 MySQL 中,有 Handler_read_key 和 Handler_read_rnd_key 兩個變量,如果 Handler_read_key 值很高而 Handler_read_rnd_key 的值很低,則表明索引經常不被使用,應該重新考慮建立索引。可以通過:show status like Handler_read% 來查看著連個參數的值。

關于如何正確創建 Mysql 的索引,請參考怎樣正確創建 MySQL 索引的方法詳解;眾所周知,數據表索引可以提高數據的檢索效率,也可以降低數據庫的 IO 成本,并且索引還可以降低數據庫的排序成本;但索引并不是時時都會生效的,比如以下幾種情況,將導致索引失效:

1. 如果條件中有 or,即使其中有條件帶索引也不會使用索引 (這也是為什么 SQL 語句中盡量少用 or 的原因)

注意:要想使用 or,又想讓索引生效,只能將 or 條件中的每個列都加上索引。

2. 對于多列索引,不是使用的第一部分,則不會使用索引。

3.like 查詢是以 % 開頭時不會使用索引。

4. 如果列類型是字符串,那一定要在條件中將數據使用引號引用起來, 否則不使用索引。

5. 如果 mysql 估計使用全表掃描要比使用索引快, 則不使用索引。

此外,查看索引的使用情況

show status like  Handler_read%

大家可以注意:

handler_read_key: 這個值越高越好,越高表示使用索引查詢到的次數。

handler_read_rnd_next: 這個值越高,說明查詢越低效。

以上是“Mysql 中 SQL 語句不使用索引的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-04發表,共計1556字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 五寨县| 静乐县| 湘乡市| 聊城市| 张家口市| 闽侯县| 砚山县| 万源市| 湘西| 资溪县| 德惠市| 扶风县| 遵义市| 鲁甸县| 甘谷县| 随州市| 炉霍县| 咸宁市| 濮阳县| 汉中市| 来凤县| 建德市| 台北市| 邹城市| 青铜峡市| 登封市| 财经| 巴塘县| 镇沅| 呼和浩特市| 锡林郭勒盟| 新乡市| 海淀区| 晴隆县| 襄汾县| 平山县| 舒兰市| 且末县| 迁西县| 遂川县| 永平县|