看了网上的一些测试,感觉不是很准确,今天亲自测试了一番。得出了结论

仅在个人计算机上测试,可能不全面,仅供参考

测试过程

准备一张测试表

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

调用存储过程插入数据

1 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+max_MySQL 中 distinct 和 group by 性能比较-Fun言相关推荐

  1. mysql+distinct+max_MySQL中distinct与group by之间的性能进行比较

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

  2. MySQL中distinct和group by性能比较

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

  3. distinct mysql性能_MySQL中distinct与group by之间的性能进行比较

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

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

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

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

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

  6. mysql 重复数据 distinct_MySQL中distinct语句去查询重复记录及相关的性能讨论

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

  7. mysql去重查询group_MySQL distinct 与 group by 去重(where/having)

    MySQL中常用去重复数据的方法是使用 distinct  或者 group by ,以上2种均能实现,但2者也有不同的地方. distinct 特点: 如:select distinct name, ...

  8. mysql中distinct走索引吗_MySQL中索引优化distinct语句及distinct的多字段操作

    MySQL通常使用GROUPBY(本质上是排序动作)完成DISTINCT操作,如果DISTINCT操作和ORDERBY操作组合使用,通常会用到临时表.这样会影响性能. 在一些情况下,MySQL可以使用 ...

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

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

最新文章

  1. linux nand 坏块_linux内核中对nand的坏块管理
  2. PHP魔术方法__tostring()篇
  3. 中国语言文学专业c刊排行榜,中国有名的文学刊物有哪些 十大中国著名文学刊物盘点...
  4. json数据格式了解
  5. 电工结业试卷_电工技术基础结业考试试卷
  6. python paramiko远程执行命令打开窗口_使用Paramiko在远程机器上通过sshClient()执行本地python脚本...
  7. python 数学期望_(Python)零起步数学+神经网络入门
  8. WebRequest中的工厂方法模式
  9. 学会拒绝别人的6个技巧_4个秘诀教你怎么拒绝别人,还能不伤和气
  10. 趣学算法 陈小玉 书中所有问题的实现代码
  11. 北理c语言乐学作业分数运算,北理乐学C语言答案-最新(12页)-原创力文档
  12. 计算机网络波特率公式,传输速率——比特率和波特率
  13. 计算机一级如何添加对角线,word中如何在单元格中添加对角线
  14. ps保存psd后图层全没了_Photoshop文件不显示图层
  15. 学习笔记---ih5_九宫格_拼图
  16. c#上位机plc通讯读位
  17. 深度学习Ubuntu20.04+CUDA+Pytorch环境配置+无显示器远程控制(1)
  18. Qt笔记(五十七)之显示图片缩略图
  19. 2018,这些重大科技值得期待
  20. uniapp聊天框滚动到底部(简单高效)

热门文章

  1. 新概念1 课文和单词(2022/12/24)
  2. Matlab神经网络语音增强,基于BP神经网络的语音增强研究
  3. 小学计算机课程目录五年级,小学五年级信息技术课件
  4. CodeForces - 1325C Ehab and Path-etic MEXs
  5. opencv学习笔记(三)—— 利用图像金字塔进行图像无缝拼接,cv2.pyrDown() ,cv2.pyrUp()
  6. USTCOJ1240 黑屋 位运算
  7. 5G网络学习(四)——5G网络中数据包转发模型(未完待续)
  8. kaggle数据集、mnist数据集、imdb数据集分享
  9. Java程序设计——事务管理(JDBC编程)
  10. Windows10超详细esmini的源码安装与测试运行——OpenScenario播放器