亚洲国产第一_开心网五月色综合亚洲_日本一级特黄特色大片免费观看_久久久久久久久久免观看

Hello! 歡迎來到小浪云!


MySQL 組合索引為何失效:查詢選擇所有列會(huì)導(dǎo)致索引失效?


MySQL 組合索引為何失效:查詢選擇所有列會(huì)導(dǎo)致索引失效?

組合索引未生效:理解查詢列對索引使用的影響

mysql 中,使用組合索引可以顯著提升特定查詢的性能。然而,有時(shí)組合索引可能無法生效,這可能是由查詢的列決定的。

讓我們考慮給定的問題:

explain select * from combine_indx where c = 3 and b = 4
登錄后復(fù)制

該查詢按 c 和 b 列查找記錄。在表中,有一個(gè)組合索引覆蓋這兩種列。然而,執(zhí)行 explain 時(shí),sql 優(yōu)化器未使用索引,而是選擇了全表掃描 (all)。

原因在于該查詢中使用了 select *,它將檢索所有列(包括未包含在組合索引中的列),這迫使數(shù)據(jù)庫回表以獲取這些列的數(shù)據(jù)。回表會(huì)導(dǎo)致索引失效,因?yàn)樾枰獟呙枵麄€(gè)表來獲取所需數(shù)據(jù)。

要解決此問題,可以修改查詢以僅選擇所需的列:

EXPLAIN SELECT b, c FROM combine_indx WHERE c = 3 and b = 4
登錄后復(fù)制

通過只選擇b 和c 列,查詢不再需要回表,因此組合索引可以生效,這將導(dǎo)致索引查找(index) 而不是全表掃描(all) 的執(zhí)行計(jì)劃。

相關(guān)閱讀