性別欄位建立索引問題
阿新 • • 發佈:2018-12-11
性別欄位能不能建立索引
之前面試被問到一個問題
什麼欄位適合建索引,什麼欄位不適合建索引。
性別欄位可以建索引嗎?
我回答得不是很好。
性別欄位這種重複性很強的欄位,不要建立索引。為什麼不能呢?
下面建立表測試下。如:我建了個tb_test表,往裡面插入了七百多萬資料,先給性別建立索引,查詢開啟 sql執行時間記錄。
建立名為tb_index_test 的索引
alter table tb_test add index tb_index_test(genenre)
# 開啟時間記錄
set profiling = 1;
查詢genenre=1 的資料;
select * from tb_test where genenre=1;
刪除索引
# 檢視tb_test表的索引
show index from tb_test;
# 刪除索引
drop index tb_test_index on tb_test;
在次查詢genenre=1 的資料
select * from tb_test where genenre=1;
檢視以上幾個命令的執行時間
show profiles;
結果如下
新增索引後查詢 比原來為新增索引還慢
新增索引 的查詢耗時為 64.5秒
沒有索引的查詢耗時為 7.8秒
結論是 重複性較強的欄位,不適合新增索引