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

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

MySQL8.0中的降序索引

瀏覽:129日期:2023-10-10 07:32:37

前言

相信大家都知道,索引是有序的;不過,在MySQL之前版本中,只支持升序索引,不支持降序索引,這會帶來一些問題;在最新的MySQL 8.0版本中,終于引入了降序索引,接下來我們就來看一看。

降序索引

單列索引

(1)查看測試表結構

mysql> show create table sbtest1G*************************** 1. row *************************** Table: sbtest1Create Table: CREATE TABLE `sbtest1` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `k` int unsigned NOT NULL DEFAULT ’0’, `c` char(120) NOT NULL DEFAULT ’’, `pad` char(60) NOT NULL DEFAULT ’’, PRIMARY KEY (`id`), KEY `k_1` (`k`)) ENGINE=InnoDB AUTO_INCREMENT=1000001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci MAX_ROWS=10000001 row in set (0.00 sec)

(2)執行SQL語句order by ... limit n,默認是升序,可以使用到索引

mysql> explain select * from sbtest1 order by k limit 10;+----+-------------+---------+------------+-------+---------------+------+---------+------+------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+---------+------------+-------+---------------+------+---------+------+------+----------+-------+| 1 | SIMPLE | sbtest1 | NULL | index | NULL | k_1 | 4 | NULL | 10 | 100.00 | NULL |+----+-------------+---------+------------+-------+---------------+------+---------+------+------+----------+-------+1 row in set, 1 warning (0.00 sec)

(3)執行SQL語句order by ... desc limit n,如果是降序的話,無法使用索引,雖然可以相反順序掃描,但性能會受到影響

mysql> explain select * from sbtest1 order by k desc limit 10;+----+-------------+---------+------------+-------+---------------+------+---------+------+------+----------+---------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra|+----+-------------+---------+------------+-------+---------------+------+---------+------+------+----------+---------------------+| 1 | SIMPLE | sbtest1 | NULL | index | NULL | k_1 | 4 | NULL | 10 | 100.00 | Backward index scan |+----+-------------+---------+------------+-------+---------------+------+---------+------+------+----------+---------------------+1 row in set, 1 warning (0.00 sec)

(4)創建降序索引

mysql> alter table sbtest1 add index k_2(k desc);Query OK, 0 rows affected (6.45 sec)Records: 0 Duplicates: 0 Warnings: 0

(5)再次執行SQL語句order by ... desc limit n,可以使用到降序索引

mysql> explain select * from sbtest1 order by k desc limit 10;+----+-------------+---------+------------+-------+---------------+------+---------+------+------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+---------+------------+-------+---------------+------+---------+------+------+----------+-------+| 1 | SIMPLE | sbtest1 | NULL | index | NULL | k_2 | 4 | NULL | 10 | 100.00 | NULL |+----+-------------+---------+------------+-------+---------------+------+---------+------+------+----------+-------+1 row in set, 1 warning (0.00 sec)

多列索引

(1)查看測試表結構

mysql> show create table sbtest1G*************************** 1. row *************************** Table: sbtest1Create Table: CREATE TABLE `sbtest1` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `k` int unsigned NOT NULL DEFAULT ’0’, `c` char(120) NOT NULL DEFAULT ’’, `pad` char(60) NOT NULL DEFAULT ’’, PRIMARY KEY (`id`), KEY `k_1` (`k`), KEY `idx_c_pad_1` (`c`,`pad`)) ENGINE=InnoDB AUTO_INCREMENT=1000001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci MAX_ROWS=10000001 row in set (0.00 sec)

(2)對于多列索引來說,如果沒有降序索引的話,那么只有SQL 1才能用到索引,SQL 4能用相反順序掃描,其他兩條SQL語句只能走全表掃描,效率非常低

SQL 1:select * from sbtest1 order by c,pad limit 10;

SQL 2:select * from sbtest1 order by c,pad desc limit 10;

SQL 3:select * from sbtest1 order by c desc,pad limit 10;

SQL 4:explain select * from sbtest1 order by c desc,pad desc limit 10;

mysql> explain select * from sbtest1 order by c,pad limit 10;+----+-------------+---------+------------+-------+---------------+-------------+---------+------+------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+---------+------------+-------+---------------+-------------+---------+------+------+----------+-------+| 1 | SIMPLE | sbtest1 | NULL | index | NULL | idx_c_pad_1 | 720 | NULL | 10 | 100.00 | NULL |+----+-------------+---------+------------+-------+---------------+-------------+---------+------+------+----------+-------+1 row in set, 1 warning (0.00 sec)mysql> explain select * from sbtest1 order by c,pad desc limit 10;+----+-------------+---------+------------+------+---------------+------+---------+------+--------+----------+----------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+---------+------------+------+---------------+------+---------+------+--------+----------+----------------+| 1 | SIMPLE | sbtest1 | NULL | ALL | NULL | NULL | NULL | NULL | 950738 | 100.00 | Using filesort |+----+-------------+---------+------------+------+---------------+------+---------+------+--------+----------+----------------+1 row in set, 1 warning (0.00 sec)mysql> explain select * from sbtest1 order by c desc,pad limit 10;+----+-------------+---------+------------+------+---------------+------+---------+------+--------+----------+----------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+---------+------------+------+---------------+------+---------+------+--------+----------+----------------+| 1 | SIMPLE | sbtest1 | NULL | ALL | NULL | NULL | NULL | NULL | 950738 | 100.00 | Using filesort |+----+-------------+---------+------------+------+---------------+------+---------+------+--------+----------+----------------+1 row in set, 1 warning (0.01 sec)mysql> explain select * from sbtest1 order by c desc,pad desc limit 10;+----+-------------+---------+------------+-------+---------------+-------------+---------+------+------+----------+---------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra|+----+-------------+---------+------------+-------+---------------+-------------+---------+------+------+----------+---------------------+| 1 | SIMPLE | sbtest1 | NULL | index | NULL | idx_c_pad_1 | 720 | NULL | 10 | 100.00 | Backward index scan |+----+-------------+---------+------------+-------+---------------+-------------+---------+------+------+----------+---------------------+1 row in set, 1 warning (0.00 sec)

(3)創建相應的降序索引

mysql> alter table sbtest1 add index idx_c_pad_2(c,pad desc);Query OK, 0 rows affected (1 min 11.27 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> alter table sbtest1 add index idx_c_pad_3(c desc,pad);Query OK, 0 rows affected (1 min 14.22 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> alter table sbtest1 add index idx_c_pad_4(c desc,pad desc);Query OK, 0 rows affected (1 min 8.70 sec)Records: 0 Duplicates: 0 Warnings: 0

(4)再次執行SQL,均能使用到降序索引,效率大大提升

mysql> explain select * from sbtest1 order by c,pad desc limit 10;+----+-------------+---------+------------+-------+---------------+-------------+---------+------+------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+---------+------------+-------+---------------+-------------+---------+------+------+----------+-------+| 1 | SIMPLE | sbtest1 | NULL | index | NULL | idx_c_pad_2 | 720 | NULL | 10 | 100.00 | NULL |+----+-------------+---------+------------+-------+---------------+-------------+---------+------+------+----------+-------+1 row in set, 1 warning (0.00 sec)mysql> explain select * from sbtest1 order by c desc,pad limit 10;+----+-------------+---------+------------+-------+---------------+-------------+---------+------+------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+---------+------------+-------+---------------+-------------+---------+------+------+----------+-------+| 1 | SIMPLE | sbtest1 | NULL | index | NULL | idx_c_pad_3 | 720 | NULL | 10 | 100.00 | NULL |+----+-------------+---------+------------+-------+---------------+-------------+---------+------+------+----------+-------+1 row in set, 1 warning (0.00 sec)mysql> explain select * from sbtest1 order by c desc,pad desc limit 10;+----+-------------+---------+------------+-------+---------------+-------------+---------+------+------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+---------+------------+-------+---------------+-------------+---------+------+------+----------+-------+| 1 | SIMPLE | sbtest1 | NULL | index | NULL | idx_c_pad_4 | 720 | NULL | 10 | 100.00 | NULL |+----+-------------+---------+------------+-------+---------------+-------------+---------+------+------+----------+-------+1 row in set, 1 warning (0.00 sec)

總結

MySQL 8.0引入的降序索引,最重要的作用是,解決了多列排序可能無法使用索引的問題,從而可以覆蓋更多的應用場景。

以上就是MySQL8.0中的降序索引的詳細內容,更多關于MySQL 降序索引的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
综合色就爱涩涩涩综合婷婷| 亚洲一区欧美二区| 蜜桃成人av| 电影亚洲精品噜噜在线观看 | 亚洲五月综合| 三级欧美在线一区| 亚洲精品黄色| 亚洲精品无吗| 欧美日韩xxxx| 国产精品亚洲综合久久| 欧美国产极品| 亚洲精品永久免费视频| 国产欧美一区二区三区精品酒店| 麻豆网站免费在线观看| 黄色aa久久| 久久蜜桃资源一区二区老牛| 欧美1区免费| 免费精品视频在线| 欧美在线日韩| 国产不卡精品| 精品一区欧美| 日韩中文字幕| 麻豆免费精品视频| 日韩不卡免费高清视频| 亚洲激情av| 婷婷综合福利| 美女视频网站久久| 欧美亚洲国产一区| 一区二区高清| 日韩和欧美的一区| 美女精品久久| 99久久激情| 亚洲毛片一区| 国内精品伊人| 99久久夜色精品国产亚洲狼| 麻豆9191精品国产| 国产毛片精品久久| 国产成人调教视频在线观看| 成人羞羞视频在线看网址| 亚洲综合三区| 国产精品对白| 久久理论电影| 91亚洲无吗| 亚洲综合在线电影| 日av在线不卡| 欧美国产另类| 狠狠色综合网| 国产精品视频一区二区三区 | 精品伊人久久久| 久久婷婷一区| 日韩不卡免费视频| 亚洲啊v在线| 夜夜嗨一区二区| 国产精品s色| 免费国产自久久久久三四区久久 | 国产精品麻豆成人av电影艾秋| 国产传媒av在线| 亚洲日韩视频| 日韩一区二区三区免费播放| 中文视频一区| 午夜久久中文| 国产精品伊人| 欧美在线影院| 国产精品videosex极品| 日韩午夜av在线| 国产资源在线观看入口av| 日韩av中文在线观看| 久久影院一区| 国产精品欧美在线观看| 在线视频精品| 97精品一区| 日本亚洲欧洲无免费码在线| 日韩不卡在线| 国产高清视频一区二区| 电影91久久久| 亚洲97av| 午夜欧美在线| 岛国精品一区| 欧美日韩亚洲一区| 免费日韩视频| 香蕉视频亚洲一级| 欧美日韩网址| 丝袜国产日韩另类美女| 日韩在线欧美| 久久影视三级福利片| 婷婷久久免费视频| 亚洲国产日韩欧美在线| 国产 日韩 欧美 综合 一区| 日韩午夜视频在线| 亚洲精品国产偷自在线观看| 国产高清不卡| 精品久久久久久久| 国产精品久久久久9999高清| 亚洲精品九九| 日韩中文字幕91| av不卡在线看| 在线亚洲成人| 午夜久久黄色| 欧美日韩中文一区二区| 肉色欧美久久久久久久免费看 | 国产精品一卡| 日韩国产一区二| 亚洲精选91| 欧美综合国产| 国产精品毛片| 午夜国产精品视频| 在线一区免费| 国产视频久久| 欧美一级专区| 亚洲综合另类| 日av在线不卡| 亚洲网址在线观看| 四虎精品一区二区免费| 亚洲午夜免费| 午夜精品福利影院| 亚洲五月综合| 亚洲tv在线| 日韩av字幕| 青青在线精品| 欧美日韩18| 青青伊人久久| 欧美日本久久| 欧美日本不卡高清| 国产精品网址| 国产一区二区三区四区大秀 | 欧美激情99| 久久精品国产免费| 精品中文在线| 国产成人免费| 成人国产精品| 亚洲伦乱视频| 亚洲精品123区| 蜜桃av一区二区| 亚洲精品三级| 国产乱人伦丫前精品视频| 久久av网站| 麻豆成全视频免费观看在线看| 日本久久成人网| 伊人久久婷婷| 中文字幕成人| 国产欧美日韩影院| 久久精品二区亚洲w码| 日韩欧美三级| 国产精品美女久久久| 综合国产精品| 国产欧美日韩影院| 国产va在线视频| 妖精视频成人观看www| 日韩激情网站| 精品国产99| 精品一区欧美| 日韩精品免费视频人成| 麻豆91在线播放| 日韩精品网站| 丝瓜av网站精品一区二区| 欧美精品中文字幕亚洲专区| 国产一区三区在线播放| 亚洲国内欧美| 日韩精品国产欧美| 久久精品一区| av一区二区高清| 日本aⅴ免费视频一区二区三区| 美女网站视频一区| 亚洲精品乱码久久久久久蜜桃麻豆| 国产精品大片免费观看| 成人羞羞在线观看网站| 亚洲人成网77777色在线播放| 国产欧美午夜| 久久精品导航| 日韩不卡免费视频| 日韩久久一区二区三区| 影音先锋久久精品| 高清一区二区| 免费人成在线不卡| 欧美a级一区二区| 黄色国产精品| 欧美黑人巨大videos精品| 欧美性感美女一区二区| 日韩精品久久久久久| 欧美gv在线| 亚洲综合专区| 国产亚洲一区二区手机在线观看| 综合激情在线| 在线天堂中文资源最新版| 亚洲深深色噜噜狠狠爱网站| 欧美丰满日韩| 亚洲乱码久久| 欧美黄色网页| 日韩精品福利一区二区三区| 国产精品蜜芽在线观看| 丝袜美腿一区二区三区| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 国产精品videosex极品| 欧美天堂在线| 欧美精品不卡| 亚洲一区中文| 国产精品7m凸凹视频分类| 视频一区二区三区中文字幕| 国产精品theporn| 亚洲综合不卡|