Mysql區分度很差是否有必要建索引

2022-10-10 23:36:12 字數 345 閱讀 1269

一般而言區分度很差的字段沒必要建索引,但是這種也要視情況而定。

儲存引擎底層,我們經常聽到,不走索引而走全表掃瞄。那麼底層為什麼不走索引而走全表掃瞄。

這裡涉及到聚集索引和非聚集索引,對於非聚集索引值,查詢的字段如果包含非索引字段,就會通過聚集索引主鍵從聚集索引中查詢出需要查詢出來的資料,也就是我們常說的回表。

回表的結果就是不僅需要掃瞄一次索引表,還要回表查詢完整資料,這裡就會造成,全表掃瞄甚至比走索引還要快。

這裡其實可以考慮一點,如果查詢出來的資料的結果,相對於全表而言較小,那麼回表的速度是不是比全表掃瞄的速度快。所以考慮是否建立索引,那就考慮 查詢的結果集與全部資料集的比值

建立索引的場景

mysql 索引長度和區分度

首先 索引長度和區分度是相互矛盾的,索引長度太短,那麼區分度就很低,吧索引長度加長,區分度就高,但是索引也是要佔記憶體的,所以我們需要找到乙個平衡點 那麼這個平衡點怎麼來定?比如使用者表有個字段 username 要給他加索引,問題是索引長度多少合適?其實我們知道 百家姓裡面有百多個姓 但是大多數人...

MySQL 索引長度和區分度

首先 索引長度和區分度是相互矛盾的,索引長度太短,那麼區分度就很低,吧索引長度加長,區分度就高,但是索引也是要佔記憶體的,所以我們需要找到乙個平衡點 那麼這個平衡點怎麼來定?比如使用者表有個字段 username 要給他加索引,問題是索引長度多少合適?其實我們知道 百家姓裡面有百多個姓 但是大多數人...

mysql索引原則 區分度 MySQL索引設計原則

1.最左字首原則 一般在where條件中兩個及以上欄位時,我們會建聯合索引。若查詢語句 select name,address,country from people where name and country 索引建立有下面兩種方案 a name,country b country,name 將...