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

您的位置:首頁技術文章
文章詳情頁

詳解MySQL InnoDB的索引擴展

瀏覽:85日期:2023-10-12 15:31:33

索引擴展,InnoDB通過將主鍵列附加到每個輔助索引中來自動擴展該索引。創(chuàng)建如下表結構:

mysql> CREATE TABLE t1 ( -> i1 INT NOT NULL DEFAULT 0, -> i2 INT NOT NULL DEFAULT 0, -> d DATE DEFAULT NULL, -> PRIMARY KEY (i1, i2), -> INDEX k_d (d) -> ) ENGINE = InnoDB;Query OK, 0 rows affected (0.14 sec)

表t1在列(i1,i2)上定義了主鍵。同時也在列(d)上定義了一個輔助索引,但InnoDB擴展了這個索引并且將它視為(d,i1,i2)來處理。

在決定如何使用以及是否使用該索引時,優(yōu)化器會考慮擴展輔助索引的主鍵列。這可以產生更高效的查詢執(zhí)行計劃和更好的性能。

優(yōu)化器可以使用擴展的二級索引來進行ref、range和index_merge索引訪問,進行松散索引掃描,進行連接和排序優(yōu)化,以及進行MIN()/MAX()優(yōu)化。

下面的示例將顯示優(yōu)化器是否使用擴展輔助索引來影響執(zhí)行計劃 向表t1插入以下數(shù)據(jù):

mysql> INSERT INTO t1 VALUES (1, 1, ’1998-01-01’), (1, 2, ’1999-01-01’), (1, 3, ’2000-01-01’), (1, 4, ’2001-01-01’), ->(1, 5, ’2002-01-01’), (2, 1, ’1998-01-01’), (2, 2, ’1999-01-01’), (2, 3, ’2000-01-01’), (2, 4, ’2001-01-01’), ->(2, 5, ’2002-01-01’), (3, 1, ’1998-01-01’), (3, 2, ’1999-01-01’), (3, 3, ’2000-01-01’), (3, 4, ’2001-01-01’), ->(3, 5, ’2002-01-01’), (4, 1, ’1998-01-01’), (4, 2, ’1999-01-01’), (4, 3, ’2000-01-01’), (4, 4, ’2001-01-01’), ->(4, 5, ’2002-01-01’), (5, 1, ’1998-01-01’), (5, 2, ’1999-01-01’), (5, 3, ’2000-01-01’), (5, 4, ’2001-01-01’), ->(5, 5, ’2002-01-01’);Query OK, 25 rows affected (0.05 sec)Records: 25 Duplicates: 0 Warnings: 0

假設執(zhí)行下面的查詢:

SET optimizer_switch = ’use_index_extensions=off’;explain select count(*) from t1 where i1=3 and d= ’2000-01-01’ ;

在這種情況下,優(yōu)化器不能使用主鍵,因為主鍵包含列(i1、i2),并且查詢沒有引用i2。相反,優(yōu)化器可以使用列(d)上的輔助索引k_d,執(zhí)行計劃取決于是否使用擴展索引。

當優(yōu)化器不考慮索引擴展時,它將索引k_d僅視為(d)

mysql> SET optimizer_switch = ’use_index_extensions=off’;Query OK, 0 rows affected (0.00 sec)mysql> explain select count(*) from t1 where i1=3 and d= ’2000-01-01’ G;*************************** 1. row *************************** id: 1 select_type: SIMPLE table: t1 partitions: NULL type: refpossible_keys: PRIMARY,k_d key: PRIMARY key_len: 4 ref: const rows: 5 filtered: 20.00 Extra: Using where1 row in set, 1 warning (0.00 sec)

當優(yōu)化器考慮到索引擴展時,它將k_d視為(d, i1, i2)。在這種情況下,它可以使用最左邊的索引前綴(d, i1)來生成更好的執(zhí)行計劃

mysql> SET optimizer_switch = ’use_index_extensions=on’;Query OK, 0 rows affected (0.00 sec)mysql> explain select count(*) from t1 where i1=3 and d= ’2000-01-01’ G;*************************** 1. row *************************** id: 1 select_type: SIMPLE table: t1 partitions: NULL type: refpossible_keys: PRIMARY,k_d key: k_d key_len: 8 ref: const,const rows: 1 filtered: 100.00 Extra: Using index1 row in set, 1 warning (0.00 sec)

在這兩種情況下,key表示優(yōu)化器將使用輔助索引k_d,但是EXPLAIN輸出顯示了使用擴展索引所帶來的這些改進:

.key_len從4字節(jié)變成了8字節(jié),指示鍵查找使用了列d和i1,不僅僅是d。

.ref的值從const變成了const,const,因為鍵查找使用兩個鍵的列而不是一個。

.rows:從5減到1,指示InnoDB將會檢查更少的行來生成查詢結果。

.Extra值從Using where;Using index變成了Using index。這意味著查詢記錄只需要使用索引而不用查詢數(shù)據(jù)行記錄。

可以使用show status來查看優(yōu)化器在使用與不使用擴展索引時的差異:

mysql> flush table t1;Query OK, 0 rows affected (0.01 sec)mysql> flush status;Query OK, 0 rows affected (0.03 sec)

上面的flush table和flush status語句用來清除表的緩存和清除狀數(shù)據(jù)統(tǒng)計數(shù)據(jù)。

不使用索引擴展時show status產生的結果如下:

mysql> SET optimizer_switch = ’use_index_extensions=off’;Query OK, 0 rows affected (0.01 sec)mysql> select count(*) from t1 where i1=3 and d= ’2000-01-01’;+----------+| count(*) |+----------+| 1 |+----------+1 row in set (0.00 sec)mysql> show status like ’handler_read%’;+-----------------------+-------+| Variable_name | Value |+-----------------------+-------+| Handler_read_first | 0 || Handler_read_key | 1 || Handler_read_last | 0 || Handler_read_next | 5 || Handler_read_prev | 0 || Handler_read_rnd | 0 || Handler_read_rnd_next | 0 |+-----------------------+-------+7 rows in set (0.00 sec)

使用索引擴展時,show status產生的結果如下,其中handler_read_next的值從5減到1,指示使用這個索引更有效率:

mysql> flush table t1;Query OK, 0 rows affected (0.01 sec)mysql> flush status -> ;Query OK, 0 rows affected (0.02 sec)mysql> SET optimizer_switch = ’use_index_extensions=on’;Query OK, 0 rows affected (0.00 sec)mysql> select count(*) from t1 where i1=3 and d= ’2000-01-01’;+----------+| count(*) |+----------+| 1 |+----------+1 row in set (0.00 sec)mysql> show status like ’handler_read%’;+-----------------------+-------+| Variable_name | Value |+-----------------------+-------+| Handler_read_first | 0 || Handler_read_key | 1 || Handler_read_last | 0 || Handler_read_next | 1 || Handler_read_prev | 0 || Handler_read_rnd | 0 || Handler_read_rnd_next | 0 |+-----------------------+-------+7 rows in set (0.01 sec)

系統(tǒng)變量optimizer_switch的use_index_extensions標志允許優(yōu)化器在決定如何使用InnoDB表的輔助索引時使不使用主鍵列。默認情況下,use_index_extensions是啟用的。為了檢查禁用索引擴展是否可以提高性能可以執(zhí)行以下語句:

mysql> SET optimizer_switch = ’use_index_extensions=off’;Query OK, 0 rows affected (0.01 sec)

以上就是詳解MySQL InnoDB的索引擴展的詳細內容,更多關于MySQL 索引擴展的資料請關注好吧啦網其它相關文章!

相關文章:
主站蜘蛛池模板: 有源电力滤波装置-电力有源滤波器-低压穿排电流互感器|安科瑞 | 郑州巴特熔体泵有限公司专业的熔体泵,熔体齿轮泵与换网器生产厂家 | EFM 022静电场测试仪-套帽式风量计-静电平板监测器-上海民仪电子有限公司 | 飞扬动力官网-广告公司管理软件,广告公司管理系统,喷绘写真条幅制作管理软件,广告公司ERP系统 | 合肥宠物店装修_合肥宠物美容院装修_合肥宠物医院设计装修公司-安徽盛世和居装饰 | 航空铝型材,7系铝型材挤压,硬质阳*氧化-余润铝制品 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 耐酸碱泵-自吸耐酸碱泵型号「品牌厂家」立式耐酸碱泵价格-昆山国宝过滤机有限公司首页 | 陕西华春网络科技股份有限公司 | 税筹星_灵活用工平台_企业财务顾问_财税法薪综合服务平台 | BESWICK球阀,BESWICK接头,BURKERT膜片阀,美国SEL继电器-东莞市广联自动化科技有限公司 | 巨野月嫂-家政公司-巨野县红墙安康母婴护理中心 | 重庆网站建设,重庆网站设计,重庆网站制作,重庆seo,重庆做网站,重庆seo,重庆公众号运营,重庆小程序开发 | 哈尔滨发电机,黑龙江柴油发电机组-北方星光 | 南京展台搭建-南京展会设计-南京展览设计公司-南京展厅展示设计-南京汇雅展览工程有限公司 | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 | 上海洗地机-洗地机厂家-全自动洗地机-手推式洗地机-上海滢皓洗地机 | 河南道路标志牌_交通路标牌_交通标志牌厂家-郑州路畅交通 | 首页-瓜尔胶系列-化工单体系列-油田压裂助剂-瓜尔胶厂家-山东广浦生物科技有限公司 | 拖链电缆_柔性电缆_伺服电缆_坦克链电缆-深圳市顺电工业电缆有限公司 | 最新范文网_实用的精品范文美文网 | 雨燕360体育免费直播_雨燕360免费NBA直播_NBA篮球高清直播无插件-雨燕360体育直播 | 暴风影音| 车件|铜件|车削件|车床加工|五金冲压件-PIN针,精密车件定制专业厂商【东莞品晔】 | 山东锐智科电检测仪器有限公司_超声波测厚仪,涂层测厚仪,里氏硬度计,电火花检漏仪,地下管线探测仪 | 齿辊分级破碎机,高低压压球机,立式双动力磨粉机-郑州长城冶金设备有限公司 | 金联宇电缆|广东金联宇电缆厂家_广东金联宇电缆实业有限公司 | 玉米深加工机械,玉米加工设备,玉米加工机械等玉米深加工设备制造商-河南成立粮油机械有限公司 | 短信通106短信接口验证码接口群发平台_国际短信接口验证码接口群发平台-速度网络有限公司 | 隧道风机_DWEX边墙风机_SDS射流风机-绍兴市上虞科瑞风机有限公司 | 磁力链接搜索神器_BT磁力狗_CILIMAO磁力猫_高效磁力搜索引擎2024 | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 | 汽车润滑油厂家-机油/润滑油代理-高性能机油-领驰慧润滑科技(河北)有限公司 | 成都热收缩包装机_袖口式膜包机_高速塑封机价格_全自动封切机器_大型套膜机厂家 | 讲师宝经纪-专业培训机构师资供应商_培训机构找讲师、培训师、讲师经纪就上讲师宝经纪 | 南方珠江-南方一线电缆-南方珠江科技电缆-南方珠江科技有限公司 南汇8424西瓜_南汇玉菇甜瓜-南汇水蜜桃价格 | 土壤检测仪器_行星式球磨仪_土壤团粒分析仪厂家_山东莱恩德智能科技有限公司 | 卡诺亚轻高定官网_卧室系统_整家定制_定制家居_高端定制_全屋定制加盟_定制家具加盟_定制衣柜加盟 | 自动化展_机器人展_机床展_工业互联网展_广东佛山工博会 | 郑州宣传片拍摄-TVC广告片拍摄-微电影短视频制作-河南优柿文化传媒有限公司 | 钢格板_钢格栅_格栅板_钢格栅板 - 安平县鑫拓钢格栅板厂家 |