Mysql-Varchar類型的前綴索引應該選擇多少長度


背景

我們在優化MySQL時,需要考慮到創建索引,對字符型的列建立索引時,必須使用前綴索引,那么選擇多大的長度合適呢?
數據表結構

計算完整列的選擇性

計算方式

select count(DISTINCT left(pu_id,3))/count(*) as a3,
count(DISTINCT left(pu_id,5))/count(*) as a5,
count(DISTINCT left(pu_id,9))/count(*) as a9,
count(DISTINCT left(pu_id,12))/count(*) as a12,
count(DISTINCT left(pu_id,14))/count(*) as a14,
count(DISTINCT left(pu_id,15))/count(*) as a15,
count(DISTINCT left(pu_id,16))/count(*) as a16 
from power_unit_state;

我們使用上面這種計算方式時,對待索引列進行left截取不同的字符長度並去重統計出現的次數並除以總條數得到前綴長度的選擇性值,值越小,意味着如果建立對應長度的前綴索引,查詢時將掃描到更多的數據。值越大,說明索引更精確。

計算結果分析

可以看到,在選擇前綴長度達到15的時候,值達到最大。在選擇前綴長度達到16的時候,已經無法再提升了,那么我們就將對該列的索引長度定為15。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM