`

mysql不使用索引特例

阅读更多

今天发现mysql的一个奇怪的事情:

表结构:

 

表索引:


 

应该可以看到ver是varchar类型,并且有索引的。

搜索一条没有的数据:

type居然是all,rows是整个表,什么情况,没有使用索引?

再搜索一条有的数据:


正常 !!

 

去除explain,上种没有的要1秒多,下种只要0.0,说明上种确实没有用索引!!

 

这是个毛线情况!我自认为对索引还是有一定功力的。翻遍手册也没找到答案。突发了一个灵感:


 用单引将123扩起,果断正常了!!!

 

这个到底是什么原因?我没有找到官方的答案,但据我的经验猜想的是:

字符串与数字去比较,会将字符串先转为数字,这样就可能打扰了索引

 

这样又引发了另一个猜想,如果数据是数字,现搜索一个字符串会如何?

经过我的测试发现,依然会使用索引的。这样就更加符合我之前的猜想,因为搜索条件是字符串,只是将搜索条件转化为索引的数字,索引并没有被打扰。

  • 大小: 10 KB
  • 大小: 9.8 KB
  • 大小: 8 KB
  • 大小: 8.3 KB
  • 大小: 7.7 KB
1
2
分享到:
评论

相关推荐

    查看mySQL数据库索引

    #### 二、查看MySQL索引的方法 在MySQL中,可以通过多种方式来查看数据库中的索引信息。其中一种常用的方法是利用`INFORMATION_SCHEMA.STATISTICS`表来获取相关信息。具体的SQL语句如下: ```sql SELECT * FROM ...

    Mysql Explain

    - **SIMPLE**:简单的 `SELECT` 查询,不使用 `UNION` 及子查询。 - **PRIMARY**:最外层的 `SELECT` 查询。 - **UNION**:`UNION` 中的第二个或后续的 `SELECT` 查询,不依赖于外部查询的结果集。 - **...

    Mysql 执行计划解读

    key列显示了MySQL实际用于查询的索引名称,如果查询没有使用索引,则显示为NULL。key_len则表示在索引字段上使用的索引长度,从而可以估算出在查询中实际使用的索引大小。 ref列表示了哪些列或常量用于与索引列进行...

    mysql if语句的使用,10多年工作总结

    MySQL IF语句的使用,10多年工作总结 MySQL 的 IF 语句是一种流程控制语句,用于实现简单的逻辑判断。今天,我们将详细介绍 IF 语句的使用方法和场景分析。 一、背景介绍 在 MySQL 中,IF 语句是一种基本的流程...

    【EXPLAIN】“type”字段详解之MySQL官方文档翻译

    - **特点**: 当索引只使用了最左侧的部分,或者索引不是 PRIMARY KEY 或 UNIQUE 时使用。 - **应用**: 使用 "=" 或 "<=>" 进行匹配。例如: - `SELECT * FROM ref_table WHERE key_column = expr;` - `SELECT * ...

    1.总 面试题.pdf

    10. **EXPLAIN工具的使用**:`EXPLAIN`命令可以用来分析MySQL如何执行查询以及索引的使用情况。通过它可以帮助我们发现查询中的瓶颈并进行优化。 ### EXPLAIN详解 #### SELECT语句的执行计划分析 - **id**:表示...

    MySQL优化之如何查找SQL效率低的原因

    EXPLAIN命令会显示出查询的类型、哪些索引被使用、表是如何连接的、每一行数据如何被扫描等等。当执行EXPLAIN命令时,MySQL会返回一行或多行数据,每一行代表了查询计划中的一个步骤。 2. 分析SELECT类型(select_...

    2021-2022计算机二级等级考试试题及答案No.13947.docx

    18. 惟一索引和主索引:不允许出现重复值的索引是惟一索引和主索引,主索引是惟一索引的一种特例。 19. VB窗体文件扩展名:窗体文件的扩展名为.FRM。 20. CSS设置无下划线链接:使用`a{text-decoration:none}`可以...

    5.31作业题导入和导出+tar.docx

    - **主键索引**:基于主键字段创建的索引,是唯一索引的一种特例。 - **全文索引**:用于支持全文搜索,适用于大型文本的检索。 - **空间索引**:用于地理数据的索引,支持基于地理位置的查询。 ### 3. 表结构中的...

    Explain关键字详解.pdf

    Extra列提供了额外的信息,这些信息可以是关于查询性能的提示,例如“Using index”表示MySQL将只使用索引来获取所需数据,或者“Using where”表示MySQL在索引之外的列上施加了where条件来过滤数据。 举个例子,当...

    数据结构题库.zip 纯文字

    数据结构是计算机科学中的核心课程之一,主要研究数据在计算机中的组织方式以及如何高效地访问和操作这些数据。...这对于编程、软件开发以及数据库管理(如MySQL中的索引优化)等领域都是必不可少的基础知识。

    ERStudio教程.pdf

    - **选择目标数据库**:根据实际使用的数据库类型(如Oracle、MySQL等)选择相应的物理模型模板。 - **生成物理模型**:ERStudio会自动根据逻辑模型的定义生成对应的物理模型。 **特例化物理模型**:在创建物理模型...

    2021-2022计算机二级等级考试试题及答案No.11269.docx

    对象是类的特例 - C. 类刻划了一组具有相同结构、操作并遵守相同规则的对象 - D. 事件是一种预先定义好的特定动作,由用户或系统激活 - **正确答案**:A - **解析**:选项 A 的描述是不正确的。对象并不直接用...

    PowerDesigner15.1操作手册.doc

    1. **逻辑模型(CDM)**:CDM代表Conceptual Data Model,是数据库设计的高层次视图,不涉及具体数据库管理系统(DBMS)的细节。它主要关注业务实体和它们之间的关系,描绘出一个与技术实现无关的业务概念模型。CDM...

    数据库系统复习题库.pdf

    标准 SQL 语言可以用于所有类型的关系数据库系统,例如 Oracle、MySQL、DB2 等。 函数依赖是多值依赖的一个特例。函数依赖是指关系模式中的一个或多个属性,能够唯一确定另一个或多个属性的值,而多值依赖是指关系...

    关于java树型结构

    - B树和B+树:常用于数据库和文件系统的索引结构,能高效地处理大数据量的存储和检索。 4. **Java集合框架中的树结构**: - `java.util.TreeSet`和`java.util.TreeMap`:基于红黑树实现,提供有序的存储和操作。 ...

Global site tag (gtag.js) - Google Analytics