今天发现mysql的一个奇怪的事情:
表结构:
表索引:
应该可以看到ver是varchar类型,并且有索引的。
搜索一条没有的数据:
type居然是all,rows是整个表,什么情况,没有使用索引?
再搜索一条有的数据:
正常 !!
去除explain,上种没有的要1秒多,下种只要0.0,说明上种确实没有用索引!!
这是个毛线情况!我自认为对索引还是有一定功力的。翻遍手册也没找到答案。突发了一个灵感:
用单引将123扩起,果断正常了!!!
这个到底是什么原因?我没有找到官方的答案,但据我的经验猜想的是:
字符串与数字去比较,会将字符串先转为数字,这样就可能打扰了索引
这样又引发了另一个猜想,如果数据是数字,现搜索一个字符串会如何?
经过我的测试发现,依然会使用索引的。这样就更加符合我之前的猜想,因为搜索条件是字符串,只是将搜索条件转化为索引的数字,索引并没有被打扰。
相关推荐
MySQL何时使用索引,何时不使用索引,归纳的还算详细,可以看看。
mysql查询,通过explain 分析,没有利用到索引,查询效率不高等出现的问题。
MySQL索引 聚集索引 如果你想了解MySQL索引查询优化,你首先应该对MySQL数据组织结构、B-Tree索引、聚集索引,次要索引有一定的了解,才能够更好地理解MySQL查询优化行为。这里主要探讨MySQL InnoDB的聚集索引。
介绍mysql不同的存储引擎 以及 索引技术在mysql中的应用
MySQL Innodb 索引原理详解
使用了不适当的数据类型:如果列的数据类型与索引的数据类型不匹配,MySQL可能无法使用索引进行有效的查询。例如,将字符串类型的列与索引类型为整数的索引进行比较。 非匹配的查询条件:如果查询条件与索引列的...
包含mysql简介、索引介绍、索引引用策略、索引失效场景等
一、数据库索引概述; 二、数据库索引分类; 三、Mysql数据库管理索引; 四、数据库事务概述; 五、数据库事务特性; 六、Mysqk数据库管理事务;
在编写SQL查询语句时,具有索引的表与不具有索引的表没有任何区别,索引只是提供一种快速访问指定记录的方法。 索引概述 索引的作用 索引是一种提高查找速度的机制 索引用来快速地寻找那些具有特定值的记录,如果...
在一些情况下,MySQL可以使用索引优化DISTINCT操作,但需要活学活用.本文涉及一个不能利用索引完成DISTINCT操作的实例. 实例1 使用索引优化DISTINCT操作 create table m11 (a int, b int, c int, d int, primary ...
如果查询语句使用索引(通常是where条件匹配索引)就会利用树的结构加快查找,索引会按值查找到要查找的行在表中位置,不需回表查询数据的就是聚簇索引(索引和数据存放在一起)。通常是需要回表再查数据,需要消耗...
mysql索引的设计和使用
Mysql中创建各种索引的语句整理 代码 添加PRIMARY KEY(主键索引) 添加UNIQUE(唯一索引) 添加INDEX(普通索引) 添加FULLTEXT(全文索引) 添加多列索引 ) mysql>ALTER TABLE `...
MySQl索引优化课件,详细得介绍了MySQl索引优化数据库
MySQL之高效覆盖索引
众所周知,增加索引是提高查询速度的有效途径,但是很多时候,即使增加了索引,查询仍然不使用索引,这种情况严重影响性能,这里就简单总结几条MySQL不使用索引的情况 如果MySQL估计使用索引比全表扫描更慢,则不...
mysql索引导出删除
尚硅谷mysql高级:索引、优化,讲的很棒,分享给大家,欢迎来下载。
打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到...