最近在网上看到了一些测试,感觉不是很准确,今天亲自测试了一番。得出了结论,测试过程在个人计算机上,可能不够全面,仅供参考。

测试过程:

准备一张测试表

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条数据

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

调用存储过程插入数据

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字段上创建索引

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

这时候我们发现时间太小了 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有了更深入的了解,希望对大家的学习有所帮助。

distinct mysql性能_MySQL中distinct与group by之间的性能进行比较相关推荐

  1. distinct mysql性能_MySQL中distinct和group by性能比较

    MySQL中distinct和group by性能比较[转] 之前看了网上的一些测试,感觉不是很准确,今天亲自测试了一番.得出了结论(仅在个人计算机上测试,可能不全面,仅供参考) 测试过程: 准备一张 ...

  2. mysql去重复查询 性能_MySQL中distinct语句去查询重复记录及相关的性能讨论_MySQL...

    在 MySQL 查询中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值,就是去重啦.用法也很简单: SELE ...

  3. mysql去重复查询 性能_MySQL中distinct语句去查询重复记录及相关的性能讨论

    在 MySQL 查询中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值,就是去重啦.用法也很简单: SELE ...

  4. mysql的group语句_MySQL中distinct与group by语句的一些比较及用法讲解

    这篇文章主要介绍了MySQL中distinct与group by的一些比较及用法讲解,二者在查询操作中的用法有很多相似之处,需要的朋友可以参考下 在数据表中记录了用户验证时使用的书目,现在想取出所有书 ...

  5. mysql聚合函数count用法_MySQL中聚合函数count的使用和性能优化技巧

    本文的环境是Windows 10,MySQL版本是5.7.12-log 一. 基本使用 count的基本作用是有两个: 统计某个列的数据的数量: 统计结果集的行数: 用来获取满足条件的数据的数量.但是 ...

  6. mysql int char连接_MySQL中int、char以及varchar的性能比较

    软件安装:装机软件必备包 SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出& ...

  7. mysql查询char和int哪个快_MySQL中int、char以及varchar的性能对比

    本篇文章给大家带来的内容是关于MySQL中int.char以及varchar的性能对比,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 网络上有许多似是而非的"谣言" ...

  8. web获取多行mysql结果_mysql中的多行查询结果合并成一个

    SELECT GROUP_CONCAT(md.data1) FROM DATA md,contacts cc WHERE md.conskey=cc.id AND md.mimetype_id= 5 ...

  9. mysql ( )连接_MySQL中concat函数(连接字符串)

    MySQL中concat函数 使用方法: CONCAT(str1,str2,-) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意: 如果所有参数均为非二进制 ...

最新文章

  1. Mysql 8.0安装
  2. 微信小程序 提交表单
  3. 创建一个圆类Circle的对象,分别设置圆的半径计算并分别显示圆半径、圆面积、圆周长。...
  4. 如何卸载干净32位的Office
  5. spring boot报错:Unable to start embedded Tomcat server 权限不够
  6. 一款实用的前端截图工具
  7. mysql where substr_mysql – 在WHERE子句中使用substr的SELECT语句
  8. 硬盘格式化了的数据找到方案
  9. gohost -- go 开发的命令行hosts配置管理工具
  10. ae 地理坐标与投影坐标转换 [转]
  11. 理解AutoResetEvent与ManualResetEvent的区别
  12. 白盒测试的逻辑覆盖辨析(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖)
  13. php怎样转换jpg,php pdf如何转jpg
  14. django后台管理界面美化
  15. 小白也能看懂的零知识证明与zk-SNARKs
  16. 新数据时代的挑战与机遇 傲腾生态填补产业鸿沟
  17. 如东人院附近一网吧转让
  18. CAD图纸该如何修改背景颜色呢?
  19. 已解决:Win10无法访问Samba共享文件夹
  20. 要去实习应该把这些面试题搞(bei)懂(hui)

热门文章

  1. 577w 简体中文版 ROM 定制过程详解
  2. 西工大计算机夏令营面试
  3. 你好,你算什么东西?
  4. 股豆网股票配资:A股集体大跌环保券商板块跌幅居前
  5. 常用软件点评(1)------系统必备软件篇
  6. Latex公式换行且不加编号
  7. 趋势的郁闷--今天感觉到了防毒墙和防火墙的区别?
  8. 空间点模式方法_一阶效应和二阶效应
  9. 牛客网 掷骰子问题 网易 动态规划
  10. CF-940-F. Machine Learning【带修莫队】