最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中distinct與group by之間的性能進(jìn)行比較

 更新時(shí)間:2015年11月09日 10:41:53   投稿:lijiao  
這篇文章主要針對(duì)MySQL中distinct與group by之間的性能進(jìn)行比較,內(nèi)容比較詳細(xì),很直觀的能看出比較結(jié)果,感興趣的小伙伴們可以參考一下

最近在網(wǎng)上看到了一些測(cè)試,感覺不是很準(zhǔn)確,今天親自測(cè)試了一番。得出了結(jié)論,測(cè)試過程在個(gè)人計(jì)算機(jī)上,可能不夠全面,僅供參考。

測(cè)試過程:

準(zhǔn)備一張測(cè)試表 

CREATE TABLE `test_test` (
 `id` int(11) NOT NULL auto_increment,
 `num` int(11) NOT NULL default '0',
 PRIMARY KEY (`id`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

建個(gè)儲(chǔ)存過程向表中插入10W條數(shù)據(jù)    

 create procedure p_test(pa int(11)) 
 begin 
 
 declare max_num int(11) default 100000; 
 declare i int default 0; 
 declare rand_num int; 
 
 select count(id) into max_num from test_test; 
 
 while i < pa do 
 if max_num < 100000 then 
  select cast(rand()*100 as unsigned) into rand_num; 
  insert into test_test(num)values(rand_num); 
 end if; 
 set i = i +1; 
 end while; 
 end

調(diào)用存儲(chǔ)過程插入數(shù)據(jù)

call p_test(100000);

開始測(cè)試:(不加索引)

 select distinct num from test_test; 
 select num from test_test group by num; 
 
 [SQL] select distinct num from test_test;
 受影響的行: 0
 時(shí)間: 0.078ms
 
 [SQL] 
 select num from test_test group by num;
 受影響的行: 0
 時(shí)間: 0.031ms

二、num字段上創(chuàng)建索引

ALTER TABLE `test_test` ADD INDEX `num_index` (`num`) ;

再次查詢   

 select distinct num from test_test; 
 select num from test_test group by num; 
 [SQL] select distinct num from test_test;
 受影響的行: 0
 時(shí)間: 0.000ms
 
 [SQL] 
 select num from test_test group by num;
 受影響的行: 0
 時(shí)間: 0.000ms

這時(shí)候我們發(fā)現(xiàn)時(shí)間太小了 0.000秒都無法精確了。
我們轉(zhuǎn)到命令行下測(cè)試

 mysql> set profiling=1;
 mysql> select distinct(num) from test_test; 
 mysql> select num from test_test group by num;
 mysql> show profiles;
 +----------+------------+----------------------------------------+
 | Query_ID | Duration | Query   |
 +----------+------------+----------------------------------------+
 | 1 | 0.00072550 | select distinct(num) from test_test |
 | 2 | 0.00071650 | select num from test_test group by num |
 +----------+------------+----------------------------------------+

分析:

加了索引之后 distinct 比沒加索引的distinct 快了107倍。
加了索引之后 group by 比沒加索引的group by 快了43倍。
再來對(duì)比 :distinct 和group by
不管是加不加索引group by 都比distinct 快。

因此使用的時(shí)候建議選 group by。

以上就是在MySQL中distinct與group by之間的性能進(jìn)行比較的,通過以上比較是不是對(duì)distinct和group by有了更深入的了解,希望對(duì)大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • 淺談MySql 視圖、觸發(fā)器以及存儲(chǔ)過程

    淺談MySql 視圖、觸發(fā)器以及存儲(chǔ)過程

    這篇文章主要介紹了MySql 視圖、觸發(fā)器以及存儲(chǔ)過程的的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • 深入理解MySQL重做日志 redo log

    深入理解MySQL重做日志 redo log

    redo log:被稱為物理日志,記錄的就是最終修改后的按頁面存儲(chǔ)的數(shù)據(jù)頁,直接存數(shù)據(jù)最終的狀態(tài),用于確保事務(wù)的持久性,本文主要介紹了MySQL重做日志 redo log,感興趣的了解一下
    2022-04-04
  • mysql alter table 修改表命令詳細(xì)介紹

    mysql alter table 修改表命令詳細(xì)介紹

    MYSQL ALTER TABLE命令用于修改表結(jié)構(gòu),例如添加/修改/刪除字段、索引、主鍵等等,本文章通過實(shí)例向大家介紹MYSQL ALTER TABLE語句的使用方法,需要的朋友可以參考一下。
    2016-10-10
  • Mysql中Binlog3種格式的介紹與分析

    Mysql中Binlog3種格式的介紹與分析

    這篇文章主要給大家介紹了關(guān)于Mysql中Binlog3種格式的介紹與分析,文中介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • MySQL 4.0 升級(jí)到mysql 5.0的方法

    MySQL 4.0 升級(jí)到mysql 5.0的方法

    需要從4.0直接升級(jí)到5.0,查看了一下changelog,發(fā)現(xiàn)主要有以下變化,需要升級(jí)mysql的朋友可以參考下。
    2011-02-02
  • MySQL數(shù)據(jù)庫子查詢語法規(guī)則詳解

    MySQL數(shù)據(jù)庫子查詢語法規(guī)則詳解

    子查詢是在查詢語句里面再嵌套一個(gè)查詢,這是因?yàn)槲覀冊(cè)谔崛?shù)據(jù)的時(shí)候有很多不知道的數(shù)據(jù)產(chǎn)生了依賴關(guān)系。本文為大家總結(jié)了一下MySQL數(shù)據(jù)庫子查詢語法規(guī)則,感興趣的可以了解一下
    2022-08-08
  • MySQL數(shù)據(jù)庫約束詳解

    MySQL數(shù)據(jù)庫約束詳解

    mysql常見約束有:1、非空約束“not?null”;2、唯一性約束“unique”;3、主鍵約束“primary?key”;4、外鍵約束“foreign?key”;5、默認(rèn)值約束“Default”等等。
    2022-10-10
  • 深入理解MySQL分區(qū)表的使用

    深入理解MySQL分區(qū)表的使用

    本文主要介紹了深入理解MySQL分區(qū)表的使用
    2024-03-03
  • 分享幾道關(guān)于MySQL索引的重點(diǎn)面試題

    分享幾道關(guān)于MySQL索引的重點(diǎn)面試題

    這篇文章主要給大家介紹了幾道關(guān)于MySQL索引的重點(diǎn)面試題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 構(gòu)建雙vip的高可用MySQL集群

    構(gòu)建雙vip的高可用MySQL集群

    大家好,本篇文章主要講的是構(gòu)建雙vip的高可用MySQL集群,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12

最新評(píng)論

鸡东县| 台北市| 英山县| 湄潭县| 杭锦旗| 嘉祥县| 元江| 遂宁市| 茂名市| 冕宁县| 金乡县| 德钦县| 金沙县| 都安| 聊城市| 海阳市| 嫩江县| 信丰县| 辉县市| 松潘县| 绥棱县| 正宁县| 小金县| 安阳市| 新营市| 新宾| 乌海市| 象州县| 广汉市| 延庆县| 蕲春县| 扎兰屯市| 工布江达县| 即墨市| 奎屯市| 社旗县| 西华县| 巫山县| 双峰县| 汤原县| 乐至县|