mysql中索引使用不当速度比没加索引还慢的测试
下面是我们插入到这个tuangou表的数据:
id web city type
1 拉手网 北京 餐饮美食
2 拉手网 上海 休闲娱乐
3 百分团 天津 餐饮美食
4 拉手网 深圳 网上购物
5 百分团 石家庄 优惠卷票
6 百分团 邯郸 美容保健
..
4999 百分团 重庆 旅游酒店
5000 拉手网 西安 优惠卷票
执行mysql语句:
$sql = "select from tuangou where web='拉手网' and city='上海'";
(1)如果没有加索引,执行时间是:0.0041秒
(2)如果只给web加索引,执行时间:0.0064秒
(3)如果web和city都加上索引,执行时间:0.0007 秒
在(2)中虽然加上索引,但查询时间比不加索引用的时间还多。所以我建议大家,需要经常查询的字段都加上索引。
相关推荐
-
mysql中索引使用不当速度比没加索引还慢的测试
下面是我们插入到这个tuangou表的数据: id web city type 1 拉手网 北京 餐饮美食 2 拉手网 上海 休闲娱乐 3 百分团 天津 餐饮美食 4 拉手网 深圳 网上购物 5 百分团 石家庄 优惠卷票 6 百分团 邯郸 美容保健 .. 4999 百分团 重庆 旅游酒店 5000 拉手网 西安 优惠卷票 执行mysql语句: $sql = "select from tuangou where web='拉手网' and city='上海'"; (1)如果没有加索引,执
-
解决MySQL中IN子查询会导致无法使用索引问题
今天看到一篇关于MySQL的IN子查询优化的案例, 一开始感觉有点半信半疑(如果是换做在SQL Server中,这种情况是绝对不可能的,后面会做一个简单的测试.) 随后动手按照他说的做了一个表来测试验证,发现MySQL的IN子查询做的不好,确实会导致无法使用索引的情况(IN子查询无法使用所以,场景是MySQL,截止的版本是5.7.18) MySQL的测试环境 测试表如下 create table test_table2 ( id int auto_increment primary key, p
-
MySQL中or、in、union与索引优化详析
本文缘起自<一分钟了解索引技巧>的作业题. 假设订单业务表结构为: order(oid, date, uid, status, money, time, -) 其中: oid,订单ID,主键 date,下单日期,有普通索引,管理后台经常按照date查询 uid,用户ID,有普通索引,用户查询自己订单 status,订单状态,有普通索引,管理后台经常按照status查询 money/time,订单金额/时间,被查询字段,无索引 - 假设订单有三种状态:0已下单,1已支付,2已完成 业务需求,查询
-
MySQL中distinct与group by之间的性能进行比较
最近在网上看到了一些测试,感觉不是很准确,今天亲自测试了一番.得出了结论,测试过程在个人计算机上,可能不够全面,仅供参考. 测试过程: 准备一张测试表 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
-
MySQL中索引与视图的用法与区别详解
前言 本文主要给大家介绍了关于MySQL中索引与视图的使用与区别的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 索引 一.概述 所有的Mysql列类型都可以被索引. mysql支持BTREE索引.HASH索引.前缀索引.全文本索引(FULLTEXT)[只有MyISAM引擎支持,且仅限于char,varchar,text列].空间列索引[只有MyISAM引擎支持,且索引的字段必须非空],但不支持函数索引. MyISAM和InnoDB存储引擎的表默认创建BTREE索引,
-
MySQL中distinct语句的基本原理及其与group by的比较
DISTINCT 实际上和 GROUP BY 操作的实现非常相似,只不过是在 GROUP BY 之后的每组中只取出一条记录而已.所以,DISTINCT 的实现和 GROUP BY 的实现也基本差不多,没有太大的区别.同样可以通过松散索引扫描或者是紧凑索引扫描来实现,当然,在无法仅仅使用索引即能完成 DISTINCT 的时候,MySQL 只能通过临时表来完成.但是,和 GROUP BY 有一点差别的是,DISTINCT 并不需要进行排序.也就是说,在仅仅只是 DISTINCT 操作的 Query
-
深入了解MySQL中的慢查询
目录 一.什么是慢查询 二.慢查询的危害 三.慢查询常见场景 总结 一.什么是慢查询 什么是MySQL慢查询呢?其实就是查询的SQL语句耗费较长的时间. 具体耗费多久算慢查询呢?这其实因人而异,有些公司慢查询的阈值是100ms,有些的阈值可能是500ms,即查询的时间超过这个阈值即视为慢查询. 正常情况下,MySQL是不会自动开启慢查询的,且如果开启的话默认阈值是10秒 # slow_query_log 表示是否开启 mysql> show global variables like '%slo
-
mysql中的临时表如何使用
目录 1.什么是临时表 2.临时表的使用场景 union groupby 3.groupby 如何优化 总结 1.什么是临时表 内部临时表是sql语句执行过程中,用来存储中间结果的的数据表,其作用类似于:join语句执行过程中的joinbuffer,order by语句执行过程中的sortBuffer一样. 这个表是mysql自己创建出来的,对客户端程序不可见.那么mysql什么时候会创建内部临时表呢?创建的内部临时表的表结构又是怎么样的呢? 2.临时表的使用场景 在mysql中常见的使用临时表
-
mysql中如何查看表是否被锁问题
目录 如何查看是否发生死锁 死锁发生情况及原因 产生原因 发生死锁的几种情况 总结 如何查看是否发生死锁 在使用mysql的时候,如何查看表是否被锁呢? 查看表被锁状态和结束死锁步骤: 1.在mysql命令行执行sql语句 use dbName; // 切换到具体数据库 show engine innodb status; // 查询db是否发生死锁 2.查看数据表被锁状态 show OPEN TABLES where In_use > 0; 该语句可以查询到当前锁表的状态 3.分析锁表的SQL
-
Mysql中key和index的区别点整理
我们先来看下代码: ALTER TABLE reportblockdetail ADD KEY taskcode (taskcode) ALTER TABLE reportblockdetail DROP KEY taskcode 嗯这确实是比较容易混淆的地方. 在我们使用MySQL中可能压根不会注意这个问题,因为大多数情况下他们展示出来的效果都差不多,但是还是不能将他们划等号(至少理论上是这样) 索引(index)和约束(key)的区别主要在于二者的出发点不同,索引(index)负责维护表的查
随机推荐
- 关于js类的定义
- 点击进行复制的JS代码实例
- Spring3.1.1+MyBatis3.1.1的增、删、查、改以及分页和事务管理
- PHP 定界符 使用技巧
- oracle 删除重复数据
- php对象和数组相互转换的方法
- python基础教程之数字处理(math)模块详解
- C#给PDF文件添加水印
- 虚拟机linux端mysql数据库无法远程访问的解决办法
- PHP编码规范之注释和文件结构说明
- js设置cookie过期当前时间减去一秒相当于立即过期
- js模糊查询实例分享
- JavaScript confirm选择判断
- jQuery拖拽插件gridster使用指南
- javascript 图片裁剪技巧解读
- 关于移位操作的一点重要说明
- C#实现DataList里面嵌套DataList的折叠菜单
- nginx常见问题整理和解决办法
- Centos部署django服务nginx+uwsgi的方法
- java打印国际象棋棋盘的方法