亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

MySQL中索引優化distinct語句及distinct的多字段操作

2024-07-24 13:08:43
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了MySQL中索引優化distinct語句及distinct的多字段操作方法,distinct語句去重功能的使用是MySQL入門學習中的基礎知識,需要的朋友可以參考下
 

MySQL通常使用GROUPBY(本質上是排序動作)完成DISTINCT操作,如果DISTINCT操作和ORDERBY操作組合使用,通常會用到臨時表.這樣會影響性能. 在一些情況下,MySQL可以使用索引優化DISTINCT操作,但需要活學活用.本文涉及一個不能利用索引完成DISTINCT操作的實例.

 

實例1 使用索引優化DISTINCT操作

create table m11 (a int, b int, c int, d int, primary key(a)) engine=INNODB;insert into m11 values (1,1,1,1),(2,2,2,2),(3,3,3,3),(4,4,4,4),(5,5,5,5),(6,6,6,6),(7,7,7,7),(8,8,8,8);explain select distinct(a) from m11;
mysql> explain select distinct(a) from m11;

 

復制代碼代碼如下:

 

+----+-------------+-------+------------+-------+---------------+---------+---------+------+------+----------+-------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+-------+---------------+---------+---------+------+------+----------+-------------+| 1 | SIMPLE | m11 | NULL | index | PRIMARY | PRIMARY | 4 | NULL | 1 | 100.00 | Using index |+----+-------------+-------+------------+-------+---------------+---------+---------+------+------+----------+-------------+

 


說明:
1 'a'列上存在主鍵索引,MySQL可以利用索引(key列值表明使用了主鍵索引)完成了DISTINCT操作.

 

2 這是使用索引優化DISTINCT操作的典型實例.

 

實例2 使用索引不能優化DISTINCT操作

create table m31 (a int, b int, c int, d int, primary key(a)) engine=MEMORY;insert into m31 values (1,1,1,1),(2,2,2,2),(3,3,3,3),(4,4,4,4),(5,5,5,5),(6,6,6,6),(7,7,7,7),(8,8,8,8);explain select distinct(a) from m31;
 mysql> explain select distinct(a) from m31;

 

復制代碼代碼如下:

 

+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+| 1 | SIMPLE | m31 | NULL | ALL | NULL | NULL | NULL | NULL | 8 | 100.00 | NULL |+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+

 



說明:
1 從查詢執行計劃看,索引沒有被使用.

 

2 對比實例1的建表語句,只是存儲引擎不同.

3 為什么主鍵索引沒有起作用? 難道MEMORY存儲引擎上的索引不可使用?

 

實例3 使用索引可以優化DISTINCT操作的Memory表

create table m33 (a int, b int, c int, d int, INDEX USING BTREE (a)) engine=MEMORY;insert into m33 values (1,1,1,1),(2,2,2,2),(3,3,3,3),(4,4,4,4),(5,5,5,5),(6,6,6,6),(7,7,7,7),(8,8,8,8);explain select distinct(a) from m33;

 

 mysql> explain select distinct(a) from m33;

+----+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+-------+| 1 | SIMPLE | m33 | NULL | index | NULL | a | 5 | NULL | 8 | 100.00 | NULL |+----+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+-------+
說明:
1 'a'列上存在主鍵索引,MySQL可以利用索引(key列值表明使用了主鍵索引)完成了DISTINCT操作.

2 對比實例2,可以發現,二者都使用了Memory引擎. 但實例3指名使用Btree類型的索引.

3 實例2沒有指定使用什么類型的索引,MySQL將采用默認值. MySQL手冊上說:

As indicated by the engine name, MEMORY tables are stored in memory. They use hash indexes by default, which makes them very fast for single-value lookups, and very useful for creating temporary tables.

 

結論:

1 看索引對查詢的影響,要注意索引的類型.

2 HASH索引適合等值查找,但不適合需要有序的場景,而Btree卻適合有序的場景.

3 看查詢執行計劃,發現索引沒有被使用,需要進一步考察索引的類型.

 

DISTINCT不能選擇多個字段的解決方法
在實際應用中,我們經常要選擇數據庫某表中重復數據,通常我們是使用DISTINCT函數。

但DISTINCT只能對一個字段有效,比如:

sql="select DISTINCT title from Table where id>0"

當我們需要列出數據中的另一列,比如:

sql="select DISTINCT title,posttime from Table where id>0" 

得出的結果就不是我們想要的了,所以我們需要用另外的方法來解決這個問題。

下面的是我寫的SQL語句,我不知道是不是很好,但愿有更好的人拿出來分享一下:

寫法一:

sql = "Select DISTINCT(title),posttime From Table1 Where id>0"

寫法二:

sql = "Select title,posttime From Table1 Where id>0 group by title,posttime"

寫法三:

sql="select title,posttime from Table where id in (select min(id) from Table group by title)"
 


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩精品国产| 亚洲国产美女精品久久久久∴| 国产成人精品一区二区| 精品欧美一区二区三区| 国产精品高潮呻吟久久av野狼| 亚洲国产日韩欧美在线图片| 中文字幕亚洲字幕| 国产精品小说在线| 国产精品久久久久久av福利| 欧美精品激情视频| 日韩网站免费观看| 国产日韩精品入口| 亚洲天堂av网| 国产精品视频一区国模私拍| 欧美午夜精品久久久久久人妖| 成人福利网站在线观看| 欧美一级bbbbb性bbbb喷潮片| 久久久精品久久久久| 一区二区亚洲欧洲国产日韩| 91高清视频免费观看| 国产视频福利一区| 久久久成人精品视频| 色先锋资源久久综合5566| 精品国产91久久久| 成人高h视频在线| 国产精品精品视频一区二区三区| 欧美最猛黑人xxxx黑人猛叫黄| 91久久精品国产91久久性色| 国产不卡视频在线| 日韩精品在线视频观看| 懂色av影视一区二区三区| 亚洲国产精彩中文乱码av在线播放| 一区二区三区国产在线观看| 久久久久久久久亚洲| 亚洲视频在线观看视频| 国产亚洲精品久久久久久777| 亚洲图中文字幕| 成人欧美一区二区三区在线| 一道本无吗dⅴd在线播放一区| 91在线免费网站| 宅男66日本亚洲欧美视频| 亚洲资源在线看| 欧美日韩国产91| 亚洲第一精品夜夜躁人人爽| 国产精品入口尤物| 91av免费观看91av精品在线| 日本欧美中文字幕| 日韩在线免费视频| 日韩精品小视频| 欧美日韩在线第一页| 国产成人短视频| 中文字幕日韩精品在线观看| 欧美激情高清视频| 久久久噜噜噜久噜久久| 91精品国产色综合久久不卡98口| 欧美日产国产成人免费图片| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产亚洲精品久久久久久牛牛| 精品成人69xx.xyz| 欧美成人精品在线播放| 精品视频在线播放色网色视频| 国产成人精品一区| 国产91九色视频| 亚洲综合色av| 亚洲欧美精品suv| 欧美亚洲国产成人精品| 8x海外华人永久免费日韩内陆视频| 精品国产成人在线| 欧美亚洲激情在线| 欧美极品欧美精品欧美视频| 国产视频精品一区二区三区| 国产一区二区三区在线播放免费观看| 国产成人jvid在线播放| 久久精品国产清自在天天线| 亚洲精品第一页| 国产精品69久久久久| 不用播放器成人网| 欧美主播福利视频| 精品国产网站地址| 国内精品久久久久久久| 国产va免费精品高清在线观看| 欧美日韩国产成人高清视频| 亚洲免费电影一区| 亚洲一区二区三区久久| 日韩在线视频中文字幕| 日韩视频免费大全中文字幕| 国产精品久久久久久久久男| 伊人亚洲福利一区二区三区| 国产日韩欧美中文| 日韩人在线观看| 精品露脸国产偷人在视频| 国产福利视频一区| 一本一本久久a久久精品牛牛影视| 国产视频久久久久| 日韩电影免费在线观看| 亚洲人成电影在线观看天堂色| 精品无码久久久久久国产| 欧美高清在线视频观看不卡| 国产欧美精品xxxx另类| 福利一区福利二区微拍刺激| 国产精品一二三在线| 另类视频在线观看| 色青青草原桃花久久综合| 欧美精品www在线观看| 国产视频久久久久| 91精品久久久久久久久不口人| 青草青草久热精品视频在线观看| 国产欧美在线视频| 亚洲缚视频在线观看| 91在线播放国产| 91豆花精品一区| 国产精品69av| 日韩激情片免费| 自拍偷拍免费精品| 午夜精品久久久99热福利| 成人欧美一区二区三区黑人| 亚洲欧美国产精品专区久久| 亚洲春色另类小说| 久久久噜久噜久久综合| 国产视频在线观看一区二区| 97精品伊人久久久大香线蕉| 日本一区二三区好的精华液| 日韩在线观看av| 国产丝袜高跟一区| 中文字幕亚洲欧美日韩2019| 欧美日韩一二三四五区| 国产精品视频午夜| 亚洲国产精品中文| 欧美刺激性大交免费视频| 国产精品亚洲第一区| 国产精品中文字幕在线| 精品日本高清在线播放| 欧美三级xxx| 国产欧美一区二区三区久久| 欧美激情在线观看视频| 欧美性色视频在线| 91久久国产精品91久久性色| 成人免费高清完整版在线观看| 欧美日韩国产91| 日韩av影视综合网| 国产精品极品美女在线观看免费| 国产视频丨精品|在线观看| 亚洲经典中文字幕| 不卡中文字幕av| 北条麻妃在线一区二区| 亚洲色在线视频| 亚洲影院在线看| 国产成人精品视频在线观看| 国产美女久久精品香蕉69| 98视频在线噜噜噜国产| 久久久噜久噜久久综合| 久久成人精品一区二区三区| 国产欧美一区二区三区久久| 日韩久久精品电影| 亚洲码在线观看| 欧美日韩国产限制| 精品视频在线播放免| 黄色一区二区三区| 日韩欧美在线视频| 欧美精品一区二区免费| 久久伊人91精品综合网站| 中文字幕在线国产精品| 国产午夜精品视频| 色系列之999|