原文:為什么重復值高的字段不能建索引(比如性別字段等)

結論 以innodb為例 a 非聚簇索引存儲了對主鍵的引用,如果select字段不在非聚簇索引內,就需要跳到主鍵索引 上圖中從右邊的索引樹跳到左邊的索引樹 ,再獲取select字段值 b 如果非聚簇索引值重復率高,那么查詢時就會大量出現上圖中從右邊跳到左邊的情況,導致整個流程很慢 c 如果where值重復率高的字段,select用了limit,只查較少數據,也就是跳的次數很少的情況下,還是可以建 ...

2018-06-28 11:05 0 5096 推薦指數:

查看詳情

為什么說性別字段不適合做索引

關於區分度不高的字段,比如性別,比如狀態字段,是否應該建索引? 只有2種取值的字段,建了索引數據庫也不一定會用,只會白白增加索引維護的額外開銷,因為索引也是需要存儲的,所以插入和更新的寫入操作,同時需要插入和更新你這個字段索引的.所以說,唯一性太差的字段不需要創建索引,即便用於where ...

Fri Jun 12 06:40:00 CST 2020 0 4068
一個只有0和1的字段,到底要不要索引

關於數據庫索引的所有文章,都會告訴你不要對這種字段索引。 但這些文章不會告訴你的一個事實是: 如果表里面這個字段分布極度不均勻的情況下,而且你需要查詢分布較少的記錄的話,索引就非常有用了 舉個例子,假設表中有一千萬條記錄,某個狀態為0的記錄總數大概會有100條,那么你想查詢狀態 ...

Tue Aug 14 18:28:00 CST 2018 25 4926
創建表的性別字段使用ENUM遇到的問題

問題描述:     創建了一個學生表(student),其中的性別字段語句如下:ALTER TABLE student ADD sex ENUM('男','女','保密') NOT NULL DEFAULT '男';    2.報錯:ERROR 1291 (HY000 ...

Sat Dec 08 00:03:00 CST 2018 0 1712
【數據庫】- 一個只有0和1的字段,到底要不要索引

關於數據庫索引的所有文章,都會告訴你不要對這種字段索引。 但這些文章不會告訴你的一個事實是: 如果表里面這個字段分布極度不均勻的情況下,而且你需要查詢分布較少的記錄的話,索引就非常有用了 舉個例子,假設表中有一千萬條記錄,某個狀態為0的記錄總數大概會有100條,那么你想查詢狀態 ...

Wed Aug 15 21:14:00 CST 2018 0 2040
分區依據字段要不要再索引

分區依據字段要不要再索引呢? 要的。 雖然表已經根據此字段分區,但這不能等同於索引。分了區,只能說該字段為某個的記錄會在某個分區里面,但不是索引,還要一頓好找。 有時候,主鍵不等於分區依據列,這時候主鍵又想聚集索引的話,那么必須包含分區依據列,搞成復合主鍵 ...

Tue Feb 28 19:12:00 CST 2017 0 4243
SQL查詢一個表中類別字段中Max()最大對應的記錄

問題是: 數據庫有一個表 code,里面有個點擊量字段click_num和一個類別字段kind以及其它信息字段, 現在要搜出每個類別中點擊量最大的那條記錄,如果是10個類別,那么結果應該是10條記錄, 如果最大點擊量有兩個相同的只要一條。 經過N次搜索,N次檢測網上的解決SQL語句,終於 ...

Wed Apr 11 19:29:00 CST 2012 2 6821
SQL查詢一個表中類別字段中Max()最大對應的記錄

數據庫有一個表 Employee,里面有個點擊量字段Salary和一個類別字段DepartmentId以及其它信息字段, 現在要搜出每個類別中Salary最大的那條記錄,如果是10個類別,那么結果應該是10條記錄, 如果最大Salary有兩個相同的則全部保留: 更高效,很好理解 ...

Tue Jan 30 23:33:00 CST 2018 0 32457
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM