MYSQL索引無效和索引有效的詳細介紹_MySQL教程
推薦:KB967723補丁造成的MYSQL在Win2003上頻繁連接不上有人可能會問,為什么9號出現的補丁,到現在才發(fā)現問題?大家都知道,服務器不是每天都重啟的,有的服務器可能一個月或者一年半載重啟一次,有的可能在9月9日以后重啟過服務器,所以補丁生效了(我個人這么認為)。 癥狀: Can't connect to MySQL server on localhost' (
1、WHERE字句的查詢條件里有不等于號(WHERE column!=...),MYSQL將無法使用索引2、類似地,如果WHERE字句的查詢條件里使用了函數(如:WHERE DAY(column)=...),MYSQL將無法使用索引
3、在JOIN操作中(需要從多個數據表提取數據時),MYSQL只有在主鍵和外鍵的數據類型相同時才能使用索引,否則即使建立了
索引也不會使用
4、如果WHERE子句的查詢條件里使用了比較操作符LIKE和REGEXP,MYSQL只有在搜索模板的第一個字符不是通配符的情況下才能
使用索引。比如說,如果查詢條件是LIKE 'abc%',MYSQL將使用索引;如果條件是LIKE '%abc',MYSQL將不使用索引。
5、在ORDER BY操作中,MYSQL只有在排序條件不是一個查詢條件表達式的情況下才使用索引。盡管如此,在涉及多個數據表的查
詢里,即使有索引可用,那些索引在加快ORDER BY操作方面也沒什么作用。
6、如果某個數據列里包含著許多重復的值,就算為它建立了索引也不會有很好的效果。比如說,如果某個數據列里包含了凈是
些諸如“0/1”或“Y/N”等值,就沒有必要為它創(chuàng)建一個索引。
7、索引有用的情況下就太多了�;局灰⒘怂饕�,除了上面提到的索引不會使用的情況下之外,其他情況只要是使用在
WHERE條件里,ORDER BY 字段,聯表字段,一般都是有效的。 建立索引要的就是有效果。 不然還用它干嗎? 如果不能確定在
某個字段上建立的索引是否有效果,只要實際進行測試下比較下執(zhí)行時間就知道。
分享:MySQL前綴索引導致的慢查詢分析總結前綴索引,并不是一個萬能藥,他的確可以幫助我們對一個寫過長的字段上建立索引。但也會導致排序(order by ,group by)查詢上都是無法使用前綴索引的
相關MySQL教程:
- MSSQL清空日志刪除日志文件
- 關于數據庫中保留小數位的問題
- 解析mysql與Oracle update的區(qū)別
- mysql 導入導出數據庫以及函數、存儲過程的介紹
- MySQL——修改root密碼的4種方法(以windows為例)
- 解決MYSQL出現Can''t create/write to file ''#sql_5c0_0.MYD''的問題
- 深入理解SQL的四種連接-左外連接、右外連接、內連接、全連接
- 解析:內聯,左外聯,右外聯,全連接,交叉連接的區(qū)別
- mysql出現“Incorrect key file for table”處理方法
- mysql重裝后出現亂碼設置為utf8可解決
- 淺析一個MYSQL語法(在查詢中使用count)的兼容性問題
- 解析MySQL中INSERT INTO SELECT的使用
- 相關鏈接:
- 教程說明:
MySQL教程-MYSQL索引無效和索引有效的詳細介紹
。