日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

詳解MySQL InnoDB的索引擴展

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

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

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)來處理。

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

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

下面的示例將顯示優化器是否使用擴展輔助索引來影響執行計劃 向表t1插入以下數據:

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

假設執行下面的查詢:

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

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

當優化器不考慮索引擴展時,它將索引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)

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

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表示優化器將使用輔助索引k_d,但是EXPLAIN輸出顯示了使用擴展索引所帶來的這些改進:

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

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

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

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

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

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語句用來清除表的緩存和清除狀數據統計數據。

不使用索引擴展時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)

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

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

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

標簽: MySQL 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲一区网站| 天使萌一区二区三区免费观看| 亚洲乱码视频| 亚洲综合不卡| 久久婷婷一区| 日韩一区二区三区在线免费观看| 黄在线观看免费网站ktv| 国产精品99在线观看| 色婷婷色综合| 久久蜜桃精品| 好吊日精品视频| 久久国产高清| 日韩精品中文字幕吗一区二区 | 国产毛片精品| 国产精品地址| 日本精品黄色| av亚洲一区二区三区| 亚洲午夜视频| 最新亚洲激情| 日本一区二区三区视频在线看 | 国产亚洲综合精品| 国产精品老牛| 成人精品视频| 美女精品一区二区| 欧美私人啪啪vps| 国产精品一区二区美女视频免费看| 国产亚洲观看| 久久精品国产网站| 欧美一级精品| 好看的av在线不卡观看| 免费看日韩精品| 国产视频网站一区二区三区| 国产suv精品一区| 久久亚洲成人| 亚洲精品第一| 老司机免费视频一区二区| 日韩国产激情| 国产精品日韩| 国产精品伦一区二区| 激情视频网站在线播放色| 午夜欧美理论片| 日本免费在线视频不卡一不卡二| 国产精品亚洲欧美日韩一区在线| 国产白浆在线免费观看| 久久人人97超碰国产公开结果| 午夜宅男久久久| 啪啪亚洲精品| 久久精品卡一| 亚洲精品少妇| 岛国av在线网站| 99国产精品99久久久久久粉嫩| 青草久久视频| 久久精品影视| 91麻豆精品| 亚洲成人不卡| 日韩av中文在线观看| 久久毛片亚洲| 亚洲一区二区av| 精品欠久久久中文字幕加勒比| 亚洲国产专区| 国产伦精品一区二区三区在线播放| 91精品一区国产高清在线gif | 麻豆91精品| 麻豆国产精品一区二区三区| 99热免费精品| 福利一区二区| 日韩综合小视频| 日本蜜桃在线观看视频| 日韩欧美中文在线观看| 天堂日韩电影| 国产精品色在线网站| 欧美精品一区二区三区精品| 久久av日韩| 国产亚洲欧洲| 天堂√8在线中文| 欧美欧美黄在线二区| 国产综合欧美| 国产成人精品免费视| 日韩黄色av| 欧美精品自拍| 国产成人在线中文字幕| 综合激情网...| 成人精品中文字幕| 国产欧美一区二区三区国产幕精品| 宅男在线一区| 欧美国产小视频| 国产一卡不卡| 鲁大师影院一区二区三区| 国产中文在线播放| 91精品丝袜国产高跟在线| 红桃视频国产一区| 日韩大片在线| 久久69成人| 国产伦精品一区二区三区千人斩| 午夜在线视频观看日韩17c| 欧美天堂视频| 久久精品伊人| 久久精品 人人爱| 日韩精品一级中文字幕精品视频免费观看 | 喷白浆一区二区| 日韩免费福利视频| 久久久精品国产**网站| 婷婷亚洲成人| 免费看日韩精品| 亚洲精华国产欧美| 欧美日韩在线网站| 国产福利片在线观看| 精品视频国内| 麻豆成人av在线| 国产精品亚洲欧美一级在线| 日韩av一区二区在线影视| 午夜在线观看免费一区| 亚洲激情另类| 亚洲免费黄色| 91精品观看| 久久久久国产精品一区二区| 四虎成人av| 麻豆精品蜜桃视频网站| 国产精品亲子伦av一区二区三区 | 欧美片第1页综合| 日韩高清国产一区在线| 日韩一区二区三区高清在线观看| 蜜臀久久久久久久| 每日更新成人在线视频| 精品一区欧美| 午夜日韩福利| 玖玖精品视频| 中文字幕一区二区av| 影音先锋久久精品| 亚洲欧美久久久| 亚洲欧美久久久| 在线精品视频一区| 亚洲欧美一级| 日韩在线电影| 青草av.久久免费一区| 国产午夜一区| 久久av免费看| 国产白浆在线免费观看| 日韩国产网站| japanese国产精品| 亚洲免费成人| 日韩精品一卡二卡三卡四卡无卡| 在线免费观看亚洲| 亚洲麻豆一区| 日本不卡一区二区| 国产精品三p一区二区| 国产一区二区精品福利地址| av在线最新| 亚洲国产一区二区三区在线播放| 亚洲激情不卡| 日韩精品免费观看视频| 麻豆久久久久久久| 一本大道色婷婷在线| 夜久久久久久| 日本午夜精品一区二区三区电影| 久久不见久久见国语| 国产粉嫩在线观看| 一区在线免费观看| 日本中文字幕一区二区视频 | 国产精品一区二区精品视频观看| 精品国产一区二| 欧美三级精品| 亚洲欧美视频一区二区三区| 日韩av一二三| 国产一区二区三区91| 亚洲国产日韩欧美在线| 日本综合精品一区| 成人台湾亚洲精品一区二区| 久久久久久久久丰满| 久久一二三区| 久久精品国产99国产| 尤物网精品视频| 欧美日韩亚洲一区三区| 韩国三级一区| 亚洲色图国产| 精品久久亚洲| 尹人成人综合网| 国产精品s色| 激情欧美亚洲| 欧美在线精品一区| 日韩高清成人| 天堂av一区| 欧美成人基地| 日本久久一区| 欧美日韩国产v| 亚洲精品在线国产| 国产精品久久久久av电视剧| 日本久久二区| 成人日韩av| 九一国产精品| 青青草91视频| 日韩欧美少妇| 亚洲精品乱码| 国模大尺度视频一区二区| 成人av动漫在线观看| 日韩精品欧美大片| 国产亚洲一区二区手机在线观看| 日韩中文欧美在线| 91欧美国产| 亚洲精品激情|