關於索引的注意事項 何時建立,索引無效,索參數量

2022-10-10 02:45:10 字數 700 閱讀 4332

儘管索引有提速的功能(可以提高相應的select的效率),但是也不能濫用,因為它會降低資料表的寫操作速度(insert和update的效率會變低),也會占用一定的磁碟空間。所以在建立和使用索引的過程中,有一些事項需要注意:

一、何時建立索引。

包含大量null的字段不適合建立索引,因為索引不可以包含null值。

包含大量重複值的字段不適合建立索引,因為基於索引的查詢規則。在進行條件篩選的時候可能會產生大量的資料行,此時索引並不能加快資料庫搜尋過程中的掃瞄速度。

二、索引無效的情況。

篩選或排序過程中,如果對索引列使用函式,則索引失效。

篩選過程中,如果字元型字段寫成了數值型的數字,則索引失效(比如,使用者id是字元型,那篩選的時候要寫 where uid = "1" )。

使用模糊查詢的時候,如果將萬用字元放在開頭,則索引失效(like "%aaa%" 不會使用索引而 like "aaa%" 可以使用索引)

對於多列的組合索引,遵循左原則,例如對欄位a,b,c設定索引 index(a,b,c),則 "a > 0 and b > 10" , "a > 0 and b > 10 and c > 100" , 都可以使組合索引有效,但是 "b > 10" ,"b > 10 and c > 100" 都會導致組合索引失效。

三、索參數量並不是越多越好。

MySQL建立索引的注意事項

對於大資料量的 尤其是百萬行以上的資料表,一定要對其建立索引,否則查詢速度極慢。參考後面的測試結果 建立索引時需注意 mysql的索引有兩種 單列索引 即在某一列上建索引 多列組合索引 即在多個列上建立同乙個索引 不像sql server分聚集索引,非聚集索引。如何建立單列索引 格式 create ...

lucene實時建立索引 注意事項

實時建立索引一直是我思考的問題,雖然現在這個問題還沒有圓滿解決,但是我總結出了一些注意事項,現在先記錄下來!第一,確保indexwriter只有乙個,建議做乙個靜態的indexwriter,只有乙個路徑去開啟和關閉!第二,確保只有一條執行緒去建立索引,因為lucene的索引檔案帶有自定義的鎖檔案,如...

Mysql 建立聯合索引注意事項

當乙個表有多條索引可走時,mysql 根據查詢語句的成本來選擇走哪條索引,聯合索引的話,它往往計算的是第乙個字段 最左邊那個 這樣往往會走錯索引.如 索引index 1 create time,category id index 2 category id 如果每天的資料都特別多,而且有很多cate...