亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

MySQL字符串索引更合理的創建規則討論

2020-01-18 20:39:14
字體:
來源:轉載
供稿:網友

前言

針對使用MySQL的索引,我們之前介紹過索引的最左前綴規則,索引覆蓋,唯一索引和普通索引的使用以及優化器選擇索引等概念,今天我們討論下如何更合理的給字符串創建索引。

如何更好的創建字符串索引

我們知道,MySQL中,數據和索引都是在一顆 B+樹 上,我們建立索引的時候,這棵樹所占用的空間越小,檢索速度就會越快,而varchar格式的字符串有些會很長,那么在效率為上的今天,我們如何更加合理的建立字符串的索引呢?
假如說我們一張表中存在 email 字段,現在要給 email 字段創建索引,email 字段值的格式為:zhangsan@qq.com。

有2種建立索引的方式:

1、直接給 email 字段建立索引:alter table t add index index1(email);

索引樹結構為:

2、建立 email 的前綴索引:alter table t add index index2(email(6));

索引數據結構為:

此時我們的查詢語句為:select id,name,email from t where email='zhangsh123@xxx.com';

當使用index1索引時其執行步驟為:

1、從index1索引樹查找索引值為zhangsh123@xxx.com的主鍵值ID1;

2、根據ID1回表查到該行數據確實為zhangsh123@xxx.com,將結果加入結果集;

3、繼續查找index1索引樹下一個索引值是否滿足zhangsh123@xxx.com,不滿足則結束查詢。

當使用index2索引時其執行步驟為:

1、從index2索引樹查找索引值為zhangs的主鍵值ID1;

2、根據ID1回表查到該行數據確實為zhangsh123@xxx.com,將結果加入結果集;

3、 繼續查找index2索引樹下一個索引值是否滿足zhangs,滿足則繼續回表查詢該行數據是否為zhangsh123@xxx.com,不是則跳過繼續查找;

4、持續查找index2索引樹,直到索引值不是zhangs為止。

從以上分析中我們可以看出,全字段索引相比前綴索引來說,減少了回表的次數,但是如果我們將前綴從6個增加到7個8個的話,前綴索引回表的次數就會減少,也就是說,只要定義好前綴的長度,我們就能既節省空間又保證效率。

那么問題來了,我們怎么衡量使用前綴索引的長度呢?

1、使用 select count(distinct email) as L from t; 查詢字段不同值的個數;

2、依次選取不同的前綴長度查看不同值的個數:

select count(distinct left(email,4))as L4, count(distinct left(email,5))as L5, count(distinct left(email,6))as L6, count(distinct left(email,7))as L7,from t;

然后根據實際可接受的損失比例,選取適合的最短的前綴長度。

前綴的長度問題我們解決了,但是一個問題是,如果使用前綴索引,那我們索引覆蓋的特性就用不到了。
用全字段索引時,當我們查詢select id,email from t where email='zhangsh123@xxx.com';時,不用回表直接就能查到id和email字段。

但是用前綴索引時,MySQL并不清楚前綴是否會整個覆蓋email的值,無論是否全包含都會根據主鍵值回表查詢判斷。

所以說,使用前綴索引雖然能節省空間保證效率但是卻不能用到覆蓋索引的特性,是否使用就在于具體考慮了。

其他字符串索引創建方式

實際情況實際考慮,并不是所有的字符串都能使用前綴截取的方式創建索引,如身份證號或者ip這些字符串使用前綴索引就不合理了,身份證號一般同一個地區的人前幾位都是一模一樣的,使用前綴索引就不合理了,而ip值我們一般在實際中將其轉化為數字去存儲。

針對身份證號,我們可以使用倒敘存儲,取前綴創建索引或者使用crc32()函數來獲取一個hash校驗碼(int值)當做索引。

倒敘:select field_list from t where id_card = reverse('input_id_card_string');

crc32:select field_list from t where id_card_crc=crc32('input_id_card_string') and id_card='input_id_card_string'

這兩種方式相對來說效率都差不多,都不支持范圍查找,支持等值查找。

在倒敘方式中,需要使用reverse函數,但是回表次數可能比hash方式多。

在hash方式中,需要新建一個索引字段并調用crc32()函數。(注意:crc32()函數獲取的結果不保證能唯一,可能存在重復的情況,但是這種情況概率較?。乇泶螖瞪?,幾乎1次就行。

最后

針對字符串索引,一般有以下幾種創建方式:

1、字符串較短,直接全字段索引

2、字符串較長,且前綴區分度較好,創建前綴索引

3、字符串較長,前綴區分度不好,倒敘或hash方式創建索引(這種方式范圍查詢就不行了)

4、根據實際情況,遇到特殊字符串,特殊對待,如ip。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品欧美亚洲777777| 97精品久久久中文字幕免费| 久久国产精品久久久久| 92福利视频午夜1000合集在线观看| 日韩欧美精品网址| 中文精品99久久国产香蕉| 日韩网站免费观看高清| 亚洲国产精品成人va在线观看| 国产精品久久久久9999| 国产啪精品视频网站| 欧美精品激情在线| 亚洲综合第一页| 久久精品视频中文字幕| 亚洲欧美中文日韩在线| 亚洲国产成人精品久久| 亚洲bt欧美bt日本bt| 久久久伊人欧美| 精品高清美女精品国产区| 久久久精品一区二区三区| 欧美激情va永久在线播放| 88国产精品欧美一区二区三区| 97精品一区二区视频在线观看| 国产ts人妖一区二区三区| 亚洲自拍偷拍第一页| 高潮白浆女日韩av免费看| 亚洲第一天堂无码专区| 国产成人高潮免费观看精品| 国产美女精品视频免费观看| 国产精品久久久久av| 精品久久久久久久久久久久| 久久五月情影视| 久久久久国产视频| 成人免费高清完整版在线观看| 亚洲精品日韩久久久| 国内揄拍国内精品| 国产日韩换脸av一区在线观看| 久久精品国产亚洲精品2020| 亚洲激情视频在线播放| 成人国产精品一区二区| 伊人久久久久久久久久久久久| 国产女人18毛片水18精品| 欧美黄色片免费观看| 欧美日本黄视频| 91免费福利视频| 国产视频福利一区| 欧美日韩亚洲国产一区| 欧美激情日韩图片| 亚洲精品成人久久| 九九热精品视频| 午夜剧场成人观在线视频免费观看| 最近中文字幕2019免费| 亚洲精品久久久久中文字幕二区| 青青久久av北条麻妃海外网| 日韩在线观看免费高清| 精品成人国产在线观看男人呻吟| 国产精品视频1区| 一本色道久久88综合日韩精品| 综合网中文字幕| www国产精品com| 国产精品99久久久久久人| 国产精品一区二区久久久| 亚洲男女自偷自拍图片另类| 黄色精品在线看| 搡老女人一区二区三区视频tv| 欧美成人在线免费视频| 欧美最猛黑人xxxx黑人猛叫黄| 大胆人体色综合| 成人一区二区电影| 国产高清视频一区三区| 国产欧美日韩丝袜精品一区| 成人久久18免费网站图片| 91欧美激情另类亚洲| 国产精品久久久久久久久男| 国产精品www| 亚洲一区中文字幕在线观看| 亚洲在线观看视频| 在线观看久久久久久| 日韩av综合网站| 亚洲人成五月天| 国产精品主播视频| 欧美成人亚洲成人| 亚洲香蕉在线观看| 欧美野外猛男的大粗鳮| 久久99久久久久久久噜噜| 国产精品一区二区性色av| 亚洲一级片在线看| 国产精品日韩欧美| 中文字幕国产亚洲| 97色在线播放视频| 福利视频导航一区| 热久久99这里有精品| 国内精品模特av私拍在线观看| 九色成人免费视频| 欧美野外wwwxxx| 国产日韩欧美在线视频观看| 欧美激情奇米色| 久国内精品在线| 国产日韩换脸av一区在线观看| 久久久亚洲精选| 91免费综合在线| 日韩免费av片在线观看| 国产一区二区黄| 国产精品久久久久av| 日本成人激情视频| 亚洲视频一区二区三区| 国产欧美日韩91| 国产免费亚洲高清| 97久久伊人激情网| 国模gogo一区二区大胆私拍| 最新国产精品拍自在线播放| 国产精品h在线观看| 欧美xxxx做受欧美.88| 欧美大片在线看免费观看| 国产精品入口免费视频一| 国产精品高潮粉嫩av| 欧美黑人巨大xxx极品| 日韩成人激情在线| 亚洲第一男人天堂| 日韩美女视频在线观看| 日韩视频一区在线| 伊人久久久久久久久久| 色噜噜狠狠狠综合曰曰曰88av| 欧美在线视频一区| 亚洲国产精品电影| 成人免费看吃奶视频网站| 色综合久久中文字幕综合网小说| 亚洲激情视频在线播放| 亚洲精品久久7777777| 亚洲人成伊人成综合网久久久| 91久久久久久久久久久久久| 中文字幕欧美国内| 成人h片在线播放免费网站| 久久综合电影一区| 国产精品久久一| 亚洲精品乱码久久久久久金桔影视| 国产精品久久久久久av| 亚洲老头同性xxxxx| 久久久久久亚洲精品中文字幕| 国产成人短视频| 精品久久中文字幕久久av| 国产美女久久精品香蕉69| 欧美大码xxxx| 国产亚洲精品久久久久久牛牛| 91老司机精品视频| 亚洲欧美第一页| 亚洲精品国产精品久久清纯直播| 日韩美女毛茸茸| www.日韩.com| 日韩视频在线观看免费| 大量国产精品视频| 亚洲2020天天堂在线观看| 精品欧美一区二区三区| 91sa在线看| 亚洲男人的天堂在线| 精品久久久久久久久久久久| www.日韩不卡电影av| 久久久这里只有精品视频| 91性高湖久久久久久久久_久久99| 精品国产91久久久久久老师| 亚洲精品wwwww| 中国china体内裑精亚洲片| 久久久久久国产| 亚洲成人精品视频| 国产精品久久av|