前綴索引

使用場(chǎng)景

有時(shí)候需要索引$\color{red}{很長(zhǎng)的字符}$(例如BLOB,TEXT,或者很長(zhǎng)的VARCHAR),這樣會(huì)使得索引又大又慢。

解決

  • 使用字符串的前幾個(gè)字符作為索引(即前綴索引)。
  • 選擇足夠長(zhǎng)的前綴以保證較高的選擇性,同時(shí)又不能太長(zhǎng)(造成空間浪費(fèi))。

索引的選擇性

索引的選擇性是指不重復(fù)的索引值(也稱為基數(shù),cardinality)和數(shù)據(jù)表的記錄總數(shù)的比值,范圍從1/#T到1之間。索引的選擇性越高則查詢效率越高,因?yàn)檫x擇性高的索引可以讓MySQL在查找時(shí)過(guò)濾掉更多的行。唯一索引的選擇性是1,這是最好的索引選擇性,性能也是最好的。

count(distinct left(city,4))/count(*) as sel4

-- 查詢索引的長(zhǎng)度
select length(old_kefuid) from xw_user_applyloan LIMIT 1;
-- 查詢索引長(zhǎng)度是5的時(shí)候的數(shù)據(jù)重復(fù)次數(shù)
select left(old_kefuid,4) as 左邊5位2長(zhǎng)度,count(*) as 總數(shù) from xw_user_applyloan GROUP by left(old_kefuid,4);
-- 設(shè)置前綴索引
alter table xw_user_applyloan add index uname( old_kefuid(4) )

前綴索引注意事項(xiàng)

  • MySQL中無(wú)法使用前綴索引進(jìn)行ORDER BY和GROUP BY,也無(wú)法用來(lái)進(jìn)行覆蓋掃描

擴(kuò)展

前綴索引

《高性能MySQL》讀書(shū)筆記(三)------ 前綴索引的長(zhǎng)度測(cè)試

MySQL前綴索引和索引選擇性

MySQL 5.7 虛擬列

Mysql 5.7 的‘虛擬列’是做什么?

查詢Mysql數(shù)據(jù)庫(kù)版本

1.使用 MySQL 函數(shù):select version();

2.使用 MySQL 變量:show variables like ‘%version%’

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 摘要:MySQL有一個(gè)很有意思的索引類型,叫做前綴索引,它可以給某個(gè)文本字段的前面部分單獨(dú)做索引,從而降低索引的大...
    暖夏未眠丶閱讀 619評(píng)論 0 1
  • 既然索引可以加快查詢速度,那么是不是只要是查詢語(yǔ)句需要,就建上索引?答案是否定的。因?yàn)樗饕m然加快了查詢速度,但索...
    似水牛年閱讀 1,231評(píng)論 0 1
  • MySQL 前綴索引能有效減小索引文件的大小,提高索引的速度。但是前綴索引也有它的壞處:MySQL 不能在 ORD...
    禾邊的曉作坊閱讀 7,960評(píng)論 0 10
  • MySQL 前綴索引 當(dāng)要索引的列字符很多時(shí) 索引則會(huì)很大且變慢( 可以只索引列開(kāi)始的部分字符串 節(jié)約索引空間 從...
    mashen閱讀 18,400評(píng)論 3 16
  • 總對(duì)身邊的人說(shuō)自己16歲,總能召來(lái)眾人的白眼和嘲笑,原因大概只有自己知道,那時(shí)候發(fā)現(xiàn)自己喜歡一個(gè)人的,這個(gè)認(rèn)知讓我...
    存錢罐閱讀 302評(píng)論 0 1

友情鏈接更多精彩內(nèi)容