今天同事問了一波,如果要建一張表,什麼情況下使用索引,什麼情況下不使用。
那麼我們其實都知道使用索引好,但是什麼情況下不使用索引比較好,這就有點不清楚了,下邊來細說一下。
1,表的資料量特別小的時候。
如果一張表,只有極少的幾條資料,那麼不使用索引,是直接全表掃瞄,速度也是極快的。
但是如果使用索引,為什麼反而慢了呢?
因為才用索引去訪問記錄的話,首先要去訪問索引表,然後再通過索引表訪問資料表,一般情況下索引表與我們的資料表不在同乙個資料塊,這種情況下需要去往返兩個資料塊,兩次,而不使用索引,一次就可以完成,所以在資料量小的時候,反而不使用索引更快。
2,資料的差異性很小
什麼叫做資料的差異性很小呢,就是你乙個字段,只有2個值,比方說,性別,這只有兩個資料的字段,就算建了索引,那麼資料庫的索引二叉樹級別也很少,大多都是平級的,這樣的二叉樹跟全表查詢差別不大。
3,頻繁更新的字段
如果乙個字段頻繁更新,還使用索引,會加大資料庫的工作量,所以不建議使用。
4,查詢欄位中含有is null /is not null/ like 『%輸入符% / <> 等條件
如果查詢條件中,有這些條件,就算該字段有索引,也不會使用索引,一定要注意。
mysql什麼情況下不會使用索引
1 如果mysql估計使用索引比全表掃瞄更慢,則不適用索引,ex 列key part1均勻的分布在1 100之間。下面的sql則不會使用索引 select from table name where key part1 1 and key part1 90 2 如果使用memory heap表,並且...
什麼情況下不能使用索引
第一,對於那些在查詢中很少使用或者參考的列不應該建立索引。這是因 為,既然這些列很少使用到,因此有索引或者無索引,並不能提高查詢速度。相反,由於增加了索引,反而降低了系統的維護速度和增大了空間需求。第二,對於那 些只有很少資料值的列也不應該增加索引。這是因為,由於這些列的取值很少,例如人事表的性別列...
什麼情況下應該使用Web Service
現在我將列舉三種情況,在這三種情況下,你將會發現使用web service會帶來極大的好處。此後,我還會舉出不應該使用web service的一些情況。跨越防火牆的通訊 如果你的應用程式有成千上萬的使用者,而且他們都分布在世界各地,那麼客戶端和伺服器之間的通訊將是乙個棘手的問題。那是因為客戶端和伺服...