mysql字段类型为char类型,建立索引但未使用原因
2018-01-22 17:08
816 查看
最近在做mysql索引测试,新建了一个数据表,为两个字段分别建立普通索引,本来是为了测试其他的情况做准备,开始之前,分别对这两个字段进行了一个简单的查询操作,explain一下不当紧,一下颠覆了我的认知,我明明只是使用了where 字段名=字段值 操作,按理说应该是走索引的呀,为什么不走了?不甘心,我又测试几遍,type类型都是ALL,全表查询,为什么,难道where
字段名=字段值本来就不走查询吗,我又去测试了下现有的其他数据表,结果正常,确实走索引,那这个表是为什么呢?搜索了一些资料,但是都没有解决,或许是搜索的关键字不对吧,我又仔细看了一遍这两个“”特殊“”的字段,也没什么特别,对比这走索引的表和不走的索引的表,唯一的不同之处就是不走索引的字段类型是char,而走索引的是int,难道char不能使用索引?变更了关键词,查询了,终于找到了问题所在,不是char类型不能走索引,而是查询的时候必须要加引号,说明这是个字符串,我的数据恰巧都是数字组成,查询的时候也没有刻意去加引号,导致查询的时候不走索引,加上引号立马生效,看来以后不能偷懒,即使是纯数字的字符串也得加上引号说明类型。
字段名=字段值本来就不走查询吗,我又去测试了下现有的其他数据表,结果正常,确实走索引,那这个表是为什么呢?搜索了一些资料,但是都没有解决,或许是搜索的关键字不对吧,我又仔细看了一遍这两个“”特殊“”的字段,也没什么特别,对比这走索引的表和不走的索引的表,唯一的不同之处就是不走索引的字段类型是char,而走索引的是int,难道char不能使用索引?变更了关键词,查询了,终于找到了问题所在,不是char类型不能走索引,而是查询的时候必须要加引号,说明这是个字符串,我的数据恰巧都是数字组成,查询的时候也没有刻意去加引号,导致查询的时候不走索引,加上引号立马生效,看来以后不能偷懒,即使是纯数字的字符串也得加上引号说明类型。
相关文章推荐
- mysql字段类型为char类型,建立索引但未使用原因
- MySQL索引使用:字段为varchar类型时,条件要使用''包起来
- MySQL在字符串类型字段上搜索整型值时无法使用索引
- 合理使用MySQL索引建立高质量查询语句
- Mysql中字段类型不一致导致索引无效的处理办法
- mysql字段类型 唯一索引 记录不重复设置
- 往Blob类型字段插入图片,使用与MySql或者Oracle
- mysql插入int字段可以使用单引号包含?今天改东西无意发现时间字段成int类型了,而且update这个字段用单引号包含,于是在MySQL上测试下能运行,求解
- mysql字段类型MicrosoftAccess、MySQL以及SQLServer所使用的数据类型
- mysql字段使用timestamp类型和默认值CURRENT_TIMESTAMP表示默认为时间,类似mssql的getdate()功能;字段自增
- 【MySQL笔记】MySQL使用索引的场景及真正利用索引的SQL类型
- mysql---使用unsigned字段类型时的问题
- MySQL索引类型总结和使用技巧以及注意事项
- mysql:21个性能优化最佳实践之5[在Join表的时候使用相当类型的列,并将其索引]
- MySQL里建立索引应该考虑数据库引擎的类型
- MySQL里建立索引应该考虑数据库引擎的类型
- Oracle字段类型char、varchar2、nvarchar2的区别与使用
- MySQL里建立索引应该考虑数据库引擎的类型
- MySQL索引类型总结和使用技巧以及注意事项
- c++ linux 如何把 char* 里面的中文 insert进入mysql(相应的字段为varchar类型)