成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

MySQL8.0中的降序索引

瀏覽:91日期: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 數據庫
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美综合一区二区| 一区二区三区四区五区精品| 国产精品xxx在线观看www| 欧美一级片在线看| 日本免费新一区视频| 国产亚洲人成网站| 中文字幕一区二区三区四区| 99精品1区2区| 精品女同一区二区| 国产69精品久久久久毛片 | 暖暖成人免费视频| 日韩一区二区三区电影在线观看| 美国三级日本三级久久99| 亚洲一区二区成人| 亚洲综合丁香婷婷六月香| 在线视频日韩| 尤物在线精品| 亚洲天堂网中文字| 99精品国产在热久久| 亚洲精品高清在线| 夜夜嗨网站十八久久| 亚洲视频你懂的| 国产精品v欧美精品v日韩精品| 国产欧美精品一区二区三区四区 | 国产偷国产偷亚洲高清97cao| 一区二区在线看| 9色精品在线| 亚洲综合在线免费观看| 99综合在线| 午夜精品久久久久久| 在线欧美日韩国产| 国产综合色视频| 日韩欧美国产一二三区| 成av人片一区二区| 久久久国际精品| 欧美日韩日本网| 亚洲欧洲另类国产综合| 亚洲精品乱码| 欧美怡红院视频| 精东粉嫩av免费一区二区三区| 亚洲国产美女| 一区二区三区在线免费观看| 性色一区二区| 五月婷婷综合网| 日本高清不卡视频| 久久97超碰国产精品超碰| 欧美视频一区二区三区| 国产精一区二区三区| 精品女同一区二区| 欧美日韩国产在线一区| 一区二区国产视频| 老牛影视一区二区三区| 国产农村妇女精品| 亚洲国产一区二区三区在线播| 亚洲成av人片一区二区梦乃| 一本色道久久综合亚洲aⅴ蜜桃 | 亚洲mv大片欧洲mv大片精品| 欧美自拍偷拍午夜视频| 成人精品国产一区二区4080| 国产精品免费视频观看| 国产精品视频免费一区| 蜜桃av一区二区三区电影| 日韩欧美一区在线| 欧美日韩在线不卡一区| 亚洲国产精品久久人人爱| 欧美熟乱第一页| 暴力调教一区二区三区| 中文字幕在线观看一区| 久久亚洲影院| 成人亚洲一区二区一| 中文在线一区二区| 久久九九电影| 高清国产一区二区| 国产精品电影院| 色94色欧美sute亚洲13| 不卡一区在线观看| 一区二区三区加勒比av| 在线视频中文字幕一区二区| 成人18视频在线播放| 亚洲一区av在线| 欧美一二三四区在线| 91久久黄色| 精品一区二区在线免费观看| 久久久精品黄色| 色综合久久六月婷婷中文字幕| 懂色av一区二区三区蜜臀| 亚洲精品欧美专区| 777欧美精品| 亚洲精品乱码久久久久久蜜桃麻豆| 看电视剧不卡顿的网站| 久久先锋资源网| 久久成人亚洲| yourporn久久国产精品| 亚洲国产美国国产综合一区二区| 欧美一激情一区二区三区| 亚洲国产二区| 国产一区二区视频在线播放| 91丨porny丨户外露出| 午夜一区二区三区视频| 日韩精品一区二区三区中文不卡| 亚洲国产高清一区| 国产精品资源站在线| 亚洲免费在线观看视频| 欧美久久久影院| 99国产精品久久久久久久| 国产一区二区久久| 一区二区三区在线观看动漫| 欧美一区二区三区啪啪| 一本色道久久| av在线不卡电影| 日韩av二区在线播放| 中文字幕av一区二区三区高| 欧美日韩在线三级| 日韩一区二区久久| 大陆成人av片| 亚洲国产人成综合网站| 久久九九国产精品| 在线国产电影不卡| 亚洲成色精品| 成人性生交大片免费看中文| 五月天激情综合网| 国产精品萝li| 日韩欧美一级二级三级| 玖玖在线精品| 国产精品国产精品| 粉嫩嫩av羞羞动漫久久久| 日本成人在线视频网站| 亚洲色图清纯唯美| 精品处破学生在线二十三| 色94色欧美sute亚洲线路一久| 黄色国产精品| 国产成人免费视频精品含羞草妖精 | 欧美一级二级三级乱码| 免费日韩一区二区| 午夜精品一区二区在线观看| 国产精品一区三区| 日本欧美韩国一区三区| 一区二区三区加勒比av| 国产精品久久看| 欧美电视剧免费观看| 欧美在线免费播放| 亚洲综合另类| 亚洲天堂激情| 99视频在线精品| 国产一区二区三区在线观看免费| 亚洲成人高清在线| 亚洲四区在线观看| 国产欧美日韩一区二区三区在线观看| 欧美一区二区不卡视频| 久久夜色精品| 99精品国产99久久久久久福利| 欧美成人免费在线| 成人avav影音| 国产不卡视频在线观看| 精品一区二区久久久| 日韩成人免费电影| 亚洲h动漫在线| 亚洲国产中文字幕| 亚洲欧美另类综合偷拍| 国产午夜亚洲精品羞羞网站| 精品国产一区二区在线观看| 欧美美女一区二区| 日本精品一区二区三区高清| 性色一区二区三区| 久久不射中文字幕| 一本色道a无线码一区v| 色婷婷精品大视频在线蜜桃视频| 国产精品视频| 午夜在线精品| 国产免费成人| 久久亚洲不卡| 91久久一区二区| 色天天综合色天天久久| 久久综合五月| 91高清在线观看| 欧美丝袜丝交足nylons| 欧美精品在线视频| 制服丝袜亚洲精品中文字幕| 欧美精品在线观看播放| 91精品国产一区二区三区香蕉| 欧美精选在线播放| 日韩一区二区三区精品视频| 日韩精品中文字幕在线不卡尤物| 日韩欧美不卡一区| 欧美精品一区二区三区在线| 久久综合九色综合97_久久久| 精品裸体舞一区二区三区| 欧美成人aa大片| 日韩精品一区二区三区中文不卡| 精品日产卡一卡二卡麻豆| 久久久久国色av免费看影院| 国产色产综合产在线视频| 中文字幕欧美激情| 日韩美女久久久| 亚洲综合丁香婷婷六月香| 午夜精品福利一区二区蜜股av| 免费精品99久久国产综合精品| 日韩黄色免费网站| 欧美bbbbb| 国产精品18久久久久久vr|