distinct mysql性能_MySQL中distinct和group by性能比较
MySQL中distinct和group by性能比较[转]
之前看了网上的一些测试,感觉不是很准确,今天亲自测试了一番。得出了结论(仅在个人计算机上测试,可能不全面,仅供参考)
测试过程:
准备一张测试表
1CREATE TABLE `test_test` (2 `id` int(11) NOT NULL auto_increment,
3 `num` int(11) NOT NULL default '0',
4 PRIMARY KEY(`id`)5 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
建个储存过程向表中插入10W条数据
01 create procedure p_test(pa int(11))02begin03
04 declare max_num int(11) default 100000;05 declare i int default 0;06 declarerand_num int;07
08 select count(id) into max_num from test_test;09
10 while i < pa do
11 if max_num < 100000then12 select cast(rand()*100 asunsigned) into rand_num;13insert into test_test(num)values(rand_num);14 end if;15 set i = i +1;16 end while;17 end
调用存储过程插入数据
1 call p_test(100000);
开始测试:(不加索引)
01select distinct num from test_test;02select num from test_test group by num;03
04[SQL] select distinct num from test_test;05 受影响的行: 0
06 时间: 0.078ms07
08[SQL]09select num from test_test group by num;10 受影响的行: 0
11 时间: 0.031ms
二、num字段上创建索引
1 ALTER TABLE `test_test` ADD INDEX `num_index` (`num`) ;
再次查询
01select distinct num from test_test;02select num from test_test group by num;03[SQL] select distinct num from test_test;04 受影响的行: 0
05 时间: 0.000ms06
07[SQL]08select num from test_test group by num;09 受影响的行: 0
10 时间: 0.000ms
这时候我们发现时间太小了 0.000秒都无法精确了。
我们转到命令行下 测试
01 mysql> set profiling=1;02 mysql>select distinct(num) from test_test;03 mysql>select num from test_test group by num;04 mysql>show profiles;05 +----------+------------+----------------------------------------+
06 | Query_ID | Duration | Query |
07 +----------+------------+----------------------------------------+
08 | 1 | 0.00072550 | select distinct(num) from test_test |
09 | 2 | 0.00071650 | select num from test_test group by num |
10 +----------+------------+----------------------------------------+
加了索引之后 distinct 比没加索引的 distinct 快了 107倍。
加了索引之后 group by 比没加索引的 group by 快了43倍。
再来对比 :distinct 和group by
不管是加不加索引group by 都比distinct 快。因此使用的时候建议选group by
distinct mysql性能_MySQL中distinct和group by性能比较相关推荐
- distinct mysql性能_MySQL中distinct与group by之间的性能进行比较
最近在网上看到了一些测试,感觉不是很准确,今天亲自测试了一番.得出了结论,测试过程在个人计算机上,可能不够全面,仅供参考. 测试过程: 准备一张测试表 CREATE TABLE `test_test` ...
- mysql去重复查询 性能_MySQL中distinct语句去查询重复记录及相关的性能讨论_MySQL...
在 MySQL 查询中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值,就是去重啦.用法也很简单: SELE ...
- mysql去重复查询 性能_MySQL中distinct语句去查询重复记录及相关的性能讨论
在 MySQL 查询中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值,就是去重啦.用法也很简单: SELE ...
- mysql的group语句_MySQL中distinct与group by语句的一些比较及用法讲解
这篇文章主要介绍了MySQL中distinct与group by的一些比较及用法讲解,二者在查询操作中的用法有很多相似之处,需要的朋友可以参考下 在数据表中记录了用户验证时使用的书目,现在想取出所有书 ...
- mysql explain key为空_MySQL中explain的使用以及性能分析
原标题:MySQL中explain的使用以及性能分析 MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性 ...
- web获取多行mysql结果_mysql中的多行查询结果合并成一个
SELECT GROUP_CONCAT(md.data1) FROM DATA md,contacts cc WHERE md.conskey=cc.id AND md.mimetype_id= 5 ...
- mysql ( )连接_MySQL中concat函数(连接字符串)
MySQL中concat函数 使用方法: CONCAT(str1,str2,-) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意: 如果所有参数均为非二进制 ...
- mysql not in 性能_SQL中Execpt和not in 性能区别
本文章介绍关于SQL中Execpt和not in 性能区别 ,有需要的同学可以仔细的看看这两个的性能哦. 主要讲 except 和 not in 的性能上的区别. 代码如下 复制代码 CREATE T ...
- mysql 互斥_MySql中互斥量mutex的实现
数据库中的Mutex量指的是一种用于保护一些临界资源的使用的信号量.当有线程需要使用这些临界资源时,会请求获得mutex量,请求成功的线程进入临界区,而请求失败的线程只能等待它释放这个mutex.互斥 ...
最新文章
- 织梦在哪写html,织梦专题页去.html后缀的方法
- UI设计师面试时如何介绍自己?
- jQuery日期和时间插件(jquery-ui-timepicker-addon.js)中文破解版使用
- 视频目标检测跟踪--Detect to Track and Track to Detect
- python 财务报表审计_python 自动化审计
- 如果编程语言是女孩子
- 本周学习总结JAVA
- java channel源码_Netty 4.0 源码分析(三):Channel和ChannelPipeline
- 学python可以做什么-学会Python后都能做什么?介绍五种Python的实用场景
- DatePicker 和 DatePickerDialog的基本使用方法
- 成为一名嵌入式Linux开发工程师需要学习哪些知识?
- Proxomitron之天涯只看规则
- ae合成设置快捷键_(精品)AE从小白到大神之路(一)-AE入门
- 2022世界杯看球指南
- ucos 入门 --- 资料收集
- No.053<软考>《(高项)备考大全》【冲刺7】《软考之 119个工具 (5)》
- Android OpenGL ES 3.0 PBO像素缓冲区对象
- Linux-线程安全
- 一张照片的启示:你的冷暖我知道!
- 【Steam VR 2.X】unity Skeleton Poser 骨骼姿势 编辑好手势后 运行时 抓取姿势会偏
热门文章
- LA2402 Fishnet 四边形面积
- opencv学习笔记(三)—— 利用图像金字塔进行图像无缝拼接,cv2.pyrDown() ,cv2.pyrUp()
- Hibernate的几种查询方式 HQL,QBC,QBE,离线查询,复合查询,分页查询
- 基于mongodb的标签系统设计
- 劣质代码评析——《写给大家看的C语言书(第2版)》附录B之21点程序(三)
- java Arrarlist中的add(int index,Object ojb)
- 基于网页网站在线视频点播系统 毕业设计毕设源码毕业论文开题报告参考(1)功能概要
- 如何不被程序员(RD)们嫌弃--写给那些血气方刚的产品经理(PM)
- 脑右下角出现金色小锁,进入系统缓慢,点击应用及各种操作反应缓慢或无反应,严重者电脑不断重启
- 网页使用的WindowMediaPlayer插件的问题22D6F312-B0F6-11D0-94AB-0080C74C7E95