什麼情況下不適合用索引

2021-09-14 08:33:56 字數 890 閱讀 7882

對於索引,有時候會方便你的一些操作,但有時候就會成為負累,增加你資料庫的壓力,那麼,應該怎樣避免這些問題呢?

1. 建立索引的目的就是幫助查詢,如果查尋用不到則索引就沒有必要建立。

2. 如果表是經常需要更新的也不適合做索引。頻繁更新會導致索引也會頻繁更新,降低寫的效率。

3. 唯一性差的字段不適合建立索引,因為無法準確的找到想要的資料,所以查完索引後依然還需要過一遍資料,這樣反而增加了查詢量。

4. 當給乙個字段建立了索引的話,而這個欄位要進行like模糊查詢的話,那麼這個值左邊不可以有%,因為索引查詢是要從左到右的,你如果給它加上%後,左邊的值不是確定的話,它會找不到這個索引。所以在使用like模糊查詢的時候,值得左邊不可以有%。

5. order by 使用單一索引時不被使用,與where字句中有復合索引時被使用,如果where字句中還有其他單一索引的字段,復合索引也將不被使用。如果存在多個order by組合,將會導致放棄使用索引。

6. where 語句裡面如果帶有or條件, myisam錶能用到索引,innodb不行。or 當前後2個字段都有索引時才可以索引出來 否則不可以,但是根據mysql版本的不同,有的版本可以用到,有的版本用不到,但是如果涉及到sql語句優化的情況下,盡量不要使用or語句來查詢。

7. 通常情況下, 用union替換where子句中的or將會起到較好的效果。對索引列使用or將造成全表掃瞄。

8. 如果資料表過大(5w以上)則有些字段(字元型長度超過(40))不適合作為索引。查詢大量資料時,索引有效,但是慢。

9. 查詢結果量大的時候不使用索引的原因:因為索引時會先過一遍索引在過一遍資料。

10. in/not in使用不到索引,因為in查詢時會進行多次全表查詢;

11. 比較符中,>《有時可以用到,有時候用不到,<>用不到;

繼續加油吧

哪些情況下適合建索引,哪些情況下不適合建索引

一 哪些情況下適合建索引 1.頻繁作為where條件語句查詢的字段 2.關聯字段需要建立索引,例如外來鍵字段,student表中的classid,classes表中的schoolid 等 3.排序字段可以建立索引 4.分組字段可以建立索引,因為分組的前提是排序 5.統計字段可以建立索引,例如coun...

什麼情況下不能使用索引

第一,對於那些在查詢中很少使用或者參考的列不應該建立索引。這是因 為,既然這些列很少使用到,因此有索引或者無索引,並不能提高查詢速度。相反,由於增加了索引,反而降低了系統的維護速度和增大了空間需求。第二,對於那 些只有很少資料值的列也不應該增加索引。這是因為,由於這些列的取值很少,例如人事表的性別列...

資料庫哪些情況下適合建索引,哪些情況下不適合建索引

一 哪些情況下適合建索引 1.頻繁作為where條件語句查詢的字段 2.關聯字段需要建立索引,例如外來鍵字段,student表中的classid,classes表中的schoolid 等 3.排序字段可以建立索引 4.分組字段可以建立索引,因為分組的前提是排序 5.統計字段可以建立索引,例如coun...