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)负责维护表的查
随机推荐
- 浅析Java中的GC垃圾回收器的意义及与GC的交互
- 10本Java架构师必读书籍
- wxPython框架类和面板类的使用实例
- 6个DIV 135或246间隔一秒轮番显示效果
- php时间戳格式化显示友好的时间函数分享
- Python+django实现文件上传
- php函数的常用方法及注意之处小结
- Python中列表和元组的使用方法和区别详解
- java用户名密码验证示例代码分享
- VBS 数字转英文代码
- javascript 宝宝出生倒计时实现代码
- PHP7之Mongodb API使用详解
- JavaScript判断一个URL链接是否有效的实现方法
- 漂亮的脚本日历,和大家分享
- 让iframe框架网页在任何浏览器下自动伸缩
- Android下的POS打印机调用的简单实现
- javascript 封装的一个实用的焦点图切换效果
- java异步方式实现登录
- 深入mysql_fetch_row()与mysql_fetch_array()的区别详解
- 推荐几个开源的微信开发项目