原文:
面試時被問到這個問題,記錄筆記,免得被面試的人鄙視!!
索引什麼時候不會生效,以下集中情況會導致索引失效:
1.條件中用or,即使其中有條件帶索引,也不會使用索引查詢(這就是查詢盡量不要用or的原因,用in吧)
注意:使用or,又想索引生效,只能將or條件中的每個列都加上索引
2.對於多列索引,不是使用的第一部分,則不會使用索引。
3.like的模糊查詢以%開頭,索引失效
4.如果列型別是字串,那一定要在條件中將資料使用引號引用起來,否則不會使用索引
5.如果mysql預計使用全表掃瞄要比使用索引快,則不使用索引
下面是檢視索引使用情況:
show status like 『handler_read%』;
handler_read_key:這個值越高越好,越高表示使用索引查詢到的次數
handler_read_rnd_next:這個值越高,說明查詢低效
哪些情況下索引會失效?
索引並不是時時都會生效的,比如以下幾種情況,將導致索引失效 如果條件中有or,即使其中有條件帶索引也不會使用 這也是為什麼盡量少用or的原因 注意 要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引 2.對於多列索引,不是使用的第一部分,則不會使用索引 3.like查詢是以 開頭 4....
哪些情況下索引會失效?
索引並不是時時都會生效的,比如以下幾種情況,將導致索引失效 如果條件中有or,即使其中有條件帶索引也不會使用 這也是為什麼盡量少用or的原因 注意 要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引 2.對於多列索引,不是使用的第一部分,則不會使用索引 3.like查詢是以 開頭 4....
哪些情況下索引會失效?
索引並不是時時都會生效的,比如以下幾種情況,將導致索引失效 如果條件中有or,即使其中有條件帶索引也不會使用 這也是為什麼盡量少用or的原因 注意 要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引 2.對於多列索引,不是使用的第一部分,則不會使用索引 3.like查詢是以 開頭 4....