电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

MySQL 隔離數(shù)據(jù)列和前綴索引的使用總結(jié)

瀏覽:2日期:2023-10-03 08:42:50
目錄隔離數(shù)據(jù)列前綴索引和索引的選擇性隔離數(shù)據(jù)列

通常,我們會(huì)發(fā)現(xiàn)查詢語句會(huì)妨礙MySQL使用索引。除非在查詢語句中列是獨(dú)立的,否則MySQL不會(huì)使用這些列的索引。“隔離”的意思是索引列不應(yīng)該成為表達(dá)式的一部分或者在一個(gè)查詢函數(shù)體中。例如下面的例子就不會(huì)命中actor_id這個(gè)索引。

SELECT `actor_id` FROM `actor` WHERE `actor_id` + 1 = 2;

對(duì)于人來說,很容易知道查詢條件實(shí)際是actor_id = 4,但是MySQL不會(huì)這么處理,因此養(yǎng)成簡(jiǎn)化WHERE判決條件的習(xí)慣,這意味著索引列獨(dú)立地在比較操作符的一側(cè)。下面是另外一個(gè)普遍錯(cuò)誤的案例:

SELECT ... WHERE TO_DAYS(CURRENT_DATE) - TO_DAYS(date_col) <= 10;前綴索引和索引的選擇性

有時(shí)候需要在很長(zhǎng)字符的列上建立索引,但這樣會(huì)導(dǎo)致索引占據(jù)的空間很大且查詢變慢。一個(gè)策略是使用哈希索引模擬,但有時(shí)候這未必是足夠好,這個(gè)時(shí)候該怎么做?

通常是可以將索引列前面的部分字符建立索引來替換全字段索引提高性能和節(jié)省空間。但這種方式會(huì)使得選擇性變差。索引的選擇性是指獨(dú)立的索引值篩選出的數(shù)據(jù)占整個(gè)數(shù)據(jù)集合的比例。高選擇性的索引可以讓MySQL過濾掉更多無關(guān)的數(shù)據(jù)。例如,一個(gè)唯一索引的選擇性是1。 列的前綴通常在選擇性方面已經(jīng)能夠提供足夠好的性能。如果使用BLOB或TEXT或非常長(zhǎng)的VARCHAR字段列,你必須定義前綴索引,以為MySQL不允許做全長(zhǎng)度索引。

你需要在使用更長(zhǎng)的前綴以獲得更好的選擇性和足夠短的前綴以節(jié)省存儲(chǔ)空間之間平衡。為了確定一個(gè)合適的前綴長(zhǎng)度,查找出最高頻的值,然后和最頻繁的前綴進(jìn)行比較。例如以城市數(shù)據(jù)表為例,我們可以使用如下的語句統(tǒng)計(jì):

SELECT COUNT(*) as cnt, `name` FROM `common_city` GROUP BY `name` ORDER BY cnt DESC LIMIT 10

MySQL 隔離數(shù)據(jù)列和前綴索引的使用總結(jié)

可以看到這些城市名稱出現(xiàn)的次數(shù)比較多。現(xiàn)在我們可以使用1個(gè)字的前綴查找最為頻繁的城市名稱前綴。

SELECT COUNT(*) as cnt, LEFT(`name`, 1) as pref FROM `common_city` GROUP BY pref ORDER BY cnt DESC LIMIT 10

MySQL 隔離數(shù)據(jù)列和前綴索引的使用總結(jié)

可以看到1個(gè)字找出來的數(shù)據(jù)集更多了,這會(huì)導(dǎo)致獨(dú)立選中的機(jī)會(huì)越少,因此需要調(diào)整一下前綴的長(zhǎng)度。例如調(diào)到3個(gè)字。

SELECT COUNT(*) as cnt, LEFT(`name`, 3) as pref FROM `common_city` GROUP BY pref ORDER BY cnt DESC LIMIT 10

MySQL 隔離數(shù)據(jù)列和前綴索引的使用總結(jié)

可以看到這和全長(zhǎng)度的相差不多,那實(shí)際三個(gè)字的前綴就夠了(原文使用的是英文城市數(shù)據(jù)表,字符會(huì)更多)。另外一種方式是使用不同長(zhǎng)度的前綴數(shù)量與全字段數(shù)量的比例評(píng)估多少合適。例如:

SELECT COUNT(DISTINCT LEFT(`name`, 1)) / COUNT(`name`) as pref1, COUNT(DISTINCT LEFT(`name`, 2)) / COUNT(`name`) as pref2, COUNT(DISTINCT LEFT(`name`, 3)) / COUNT(`name`) as pref3, COUNT(DISTINCT LEFT(`name`, 4)) / COUNT(`name`) as pref4 FROM `common_city`

MySQL 隔離數(shù)據(jù)列和前綴索引的使用總結(jié)

數(shù)值越接近于1效果越好,但是也可以看到,隨著前綴長(zhǎng)度的加長(zhǎng)改善的空間越小。只看平均值并不是一個(gè)好主意,還需要檢查一下最壞情況。也許會(huì)覺得3-4個(gè)字足夠了,但是如果數(shù)據(jù)分布很不均勻,那可能會(huì)存在陷阱。因此還需要檢查一下前綴少的是不是存在一個(gè)前綴對(duì)應(yīng)的數(shù)據(jù)與其他相比極其多的情況。最后可以給指定的列加前綴索引。

ALTER TABLE `common_city` ADD KEY (name(3));

前綴索引在節(jié)省空間和提高效率方面表現(xiàn)不錯(cuò),但是也有缺陷,那就是在ORDER BY和GROUP BY上無法使用索引(實(shí)際驗(yàn)證在MySQL 5.7以上版本也有用)。另外一種常見的場(chǎng)景是在較長(zhǎng)的十六進(jìn)制字符串中,例如存儲(chǔ)的sessionId,取前8位前綴做索引將過濾很多無關(guān)數(shù)據(jù),效果很好。

以上就是MySQL 隔離數(shù)據(jù)列和前綴索引的使用總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于MySQL 隔離數(shù)據(jù)列和前綴索引的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
主站蜘蛛池模板: 奥运星-汽车性能网评-提供个性化汽车资讯 | 地图标注|微信高德百度地图标注|地图标记-做地图[ZuoMap.com] | 北京浩云律师事务所-法律顾问_企业法务_律师顾问_公司顾问 | 杭州中策电线|中策电缆|中策电线|杭州中策电缆|杭州中策电缆永通集团有限公司 | 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 | 千斤顶,液压千斤顶-力良企业,专业的液压千斤顶制造商,shliliang.com | 全自动实验室洗瓶机,移液管|培养皿|进样瓶清洗机,清洗剂-广州摩特伟希尔机械设备有限责任公司 | 踏板力计,制动仪,非接触多功能速度仪,逆反射系数测试仪-创宇 | 【法利莱住人集装箱厂家】—活动集装箱房,集装箱租赁_大品牌,更放心 | 丹尼克尔拧紧枪_自动送钉机_智能电批_柔性振动盘_螺丝供料器品牌 | 板式换热器_板式换热器价格_管式换热器厂家-青岛康景辉 | 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | 电子海图系统-电梯检验系统-智慧供热系统开发-商品房预售资金监管系统 | 电主轴,车床电磨头,变频制动电机-博山鸿达特种电机 | BESWICK球阀,BESWICK接头,BURKERT膜片阀,美国SEL继电器-东莞市广联自动化科技有限公司 | 软文推广发布平台_新闻稿件自助发布_媒体邀约-澜媒宝 | 四川成人高考_四川成考报名网 | 碳刷_刷握_集电环_恒压簧_电刷厂家-上海丹臻机电科技有限公司 | 防水套管-柔性防水套管-刚性防水套管-上海执品管件有限公司 | 环讯传媒,永康网络公司,永康网站建设,永康小程序开发制作,永康网站制作,武义网页设计,金华地区网站SEO优化推广 - 永康市环讯电子商务有限公司 | 除甲醛公司-甲醛检测治理-杭州创绿家环保科技有限公司-室内空气净化十大品牌 | 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | PCB厂|线路板厂|深圳线路板厂|软硬结合板厂|电路板生产厂家|线路板|深圳电路板厂家|铝基板厂家|深联电路-专业生产PCB研发制造 | 热缩管切管机-超声波切带机-织带切带机-无纺布切布机-深圳市宸兴业科技有限公司 | 阳光模拟试验箱_高低温试验箱_高低温冲击试验箱_快速温变试验箱|东莞市赛思检测设备有限公司 | 校服厂家,英伦校服定做工厂,园服生产定制厂商-东莞市艾咪天使校服 | 中控室大屏幕-上海亿基自动化控制系统工程有限公司 | 清管器,管道清管器,聚氨酯发泡球,清管球 - 承德嘉拓设备 | 四川成都干燥设备_回转筒干燥机_脉冲除尘器_输送设备_热风炉_成都川工星科机电设备有限公司 | 精准猎取科技资讯,高效阅读科技新闻_科技猎 | 超细|超微气流粉碎机|气流磨|气流分级机|粉体改性机|磨粉机|粉碎设备-山东埃尔派粉体科技 | 老城街小面官网_正宗重庆小面加盟技术培训_特色面馆加盟|牛肉拉面|招商加盟代理费用多少钱 | 东莞市超赞电子科技有限公司 全系列直插/贴片铝电解电容,电解电容,电容器 | 膜结构_ETFE膜结构_膜结构厂家_膜结构设计-深圳市烨兴智能空间技术有限公司 | 暖气片十大品牌厂家_铜铝复合暖气片厂家_暖气片什么牌子好_欣鑫达散热器 | 砖机托板价格|免烧砖托板|空心砖托板厂家_山东宏升砖机托板厂 | 新疆十佳旅行社_新疆旅游报价_新疆自驾跟团游-新疆中西部国际旅行社 | 缠膜机|缠绕包装机|无纺布包装机-济南达伦特机械设备有限公司 | RTO换向阀_VOC高温阀门_加热炉切断阀_双偏心软密封蝶阀_煤气蝶阀_提升阀-湖北霍科德阀门有限公司 | 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 | 合金耐磨锤头_破碎机锤头_郑州市德勤建材有限公司 |