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

MySQL中distinct與group by之間的性能進行比較

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

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

測試過程:

準備一張測試表 

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 ;

建個儲存過程向表中插入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

調用存儲過程插入數(shù)據(jù)

call p_test(100000);

開始測試:(不加索引)

 select distinct num from test_test; 
 select num from test_test group by num; 
 
 [SQL] select distinct num from test_test;
 受影響的行: 0
 時間: 0.078ms
 
 [SQL] 
 select num from test_test group by num;
 受影響的行: 0
 時間: 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
 時間: 0.000ms
 
 [SQL] 
 select num from test_test group by num;
 受影響的行: 0
 時間: 0.000ms

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

 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倍。
再來對比 :distinct 和group by
不管是加不加索引group by 都比distinct 快。

因此使用的時候建議選 group by。

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

相關文章

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

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

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

    深入理解MySQL重做日志 redo log

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

    mysql alter table 修改表命令詳細介紹

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

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

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

    MySQL 4.0 升級到mysql 5.0的方法

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

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

    子查詢是在查詢語句里面再嵌套一個查詢,這是因為我們在提取數(shù)據(jù)的時候有很多不知道的數(shù)據(jù)產生了依賴關系。本文為大家總結了一下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、默認值約束“Default”等等。
    2022-10-10
  • 深入理解MySQL分區(qū)表的使用

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

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

    分享幾道關于MySQL索引的重點面試題

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

    構建雙vip的高可用MySQL集群

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

最新評論

五河县| 施甸县| 江川县| 邵武市| 开远市| 巧家县| 大关县| 古蔺县| 中山市| 江北区| 普格县| 利辛县| 新巴尔虎右旗| 潞城市| 彭水| 德保县| 临颍县| 鄂伦春自治旗| 三都| 普定县| 浮山县| 双牌县| 舒兰市| 常德市| 温宿县| 呼和浩特市| 米脂县| 兴隆县| 京山县| 比如县| 米泉市| 开封市| 衡阳市| 屯昌县| 科尔| 科技| 东辽县| 新巴尔虎右旗| 浏阳市| 乐至县| 兰坪|