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)负责维护表的查
随机推荐
- Windows 2003部署软件
- 使用PowerShell操作Windows服务的命令小结
- JS截取字符串实例详解
- MVC数据验证详解
- linux查看所有用户和查看用户组的方法(修改用户组)
- React+ajax+java实现上传图片并预览功能
- AJAX跨域请求JSONP获取JSON数据的实例代码
- CSS中Float(浮动)相关技巧文章
- 浅谈java面向对象的数组化信息处理
- 微信小程序 rpx 尺寸单位详细介绍
- Java判断字符串中是否包含中文方法
- 如果文字过长,则将过长的部分变成省略号显示
- Android shape和selector 结合使用实例代码
- C++实现string存取二进制数据的方法
- C#判断一天、一年已经过了百分之多少的方法
- 使用JS获取SessionStorage的值
- 在vue中使用css modules替代scroped的方法
- vue 中filter的多种用法
- Vue SPA单页应用首屏优化实践
- 易语言删除系统临时文件代码实操