首页 > 数据库 >【MySQL】索引不会被使用的7种情况

【MySQL】索引不会被使用的7种情况

时间:2023-01-16 18:05:05浏览次数:50  
标签:MySQL 通配符 索引 使用 WHERE 不会


[1] 隐式类型转换

  索引列出现了隐式类型转换(​​Implicit Type Conversion​​​),则​​MySQL​​​不会使用索引。常见的情况是,如果在​​SQL​​​的​​WHERE​​​条件中,字段类型为字符串,而其值为数值,那么​​MySQL​​​不会使用索引,这个规则和​​Oracle​​是一致的,所以,字符类型的字段值应该加上引号。

[2] cast函数

  在使用​​cast​​​函数时,需要保证字符集一样,否则​​MySQL​​不会使用索引。

[3] OR

  如果​​WHERE​​​条件中含有​​OR​​​,除非​​OR​​​条件中的所有列都是索引列,否则​​MySQL​​不会选择索引。

[4] 最左前导原则

  对于多列索引,若没有使用前导列,则​​MySQL​​不会使用索引。

[5] 通配符是第一个字符

  在​​WHERE​​子句中,如果索引列所对应的第一个字符由通配符开始,索引将不被采用,然而当通配符出现在字符串其他位置时,优化器就能利用索引。

[6] 全表扫描更快

  如果​​MySQL​​​估计使用全表扫描要比使用索引快,那么​​MySQL​​将不使用索引。

[7] 运算

  如果对索引字段进行函数、算数运算或其他表达式等操作,那么 MySQL也个便用索引。


标签:MySQL,通配符,索引,使用,WHERE,不会
From: https://blog.51cto.com/u_15942590/6010664

相关文章

  • 【MySQL思考】触发器是否应该在生产环境中使用?
    [1]触发器简单介绍  MySQL触发器​​trigger​​​是一种存储程序,它和一个指定的表相关联,当该表中的数据发生变化(增加、更新、删除)时自动执行。这些修改数据行的操作......
  • 【深度学习】pytorch使用tensorboard可视化实验数据
    [1]可视化界面  先上效果图:[2]使用教程[2.1]安装pytorch和tensorboard  输入命令:pipinstalltorchpipinstalltensorboard[2.2]在代码中使用write  代码dem......
  • ubuntu系统使用 sudo: cd:找不到命令
    1、https://blog.csdn.net/sazass/article/details/125694492需要cd/var/lib/但是提示:权限不够然后前面添加sudo报错:sudo:cd:找不到命令原因:   1cd是Linux内建的......
  • MeterSphere UI 测试脚本的使用
    目前MeterSphereUI测试仅支持js脚本,设置的脚本将在浏览器中执行。以脚本有返回值和无返回值两种情况为例。1js脚本有返回值情况1.1脚本类型:同步,设置变量:有返回值(以下脚......
  • Windows使用命令行查看cpu的温度
    使用PowerShell(cmd命令行不行的),以管理员身份打开,$temp=gwmimsacpi_thermalzonetemperature-namespace"root/wmi"$temp.CriticalTripPoint/10-273.15#预警温度$te......
  • Docker官方私有仓库registry的安装和使用
    1、下载和安装DockerHub作为Docker默认官方公共镜像,如果想要自己搭建私有镜像仓库,官方也提供Registry镜像。#搜索registrydockersearchregistry#拉取registr......
  • MySQL 中的事务控制机制
    事务控制是MySQL的重要特性之一。在MySQL中,InnoDB和NDBCluster是常见的事务型存储引擎。1.自动提交默认情况下,MySQL是自动提交(autocommit)的。也就意味着:如果不......
  • spring boot 图文验证码(Kaptcha)使用
    如何使用可以直接去官网http://code.google.com/p/kaptcha/下载jar,或者在pom.xml中导入` <groupId>com.baomidou</groupId> <artifactId>kaptcha-spring-boot-sta......
  • mac虚拟环境Reason: tried: '/usr/local/lib/libmysqlclient.21.dylib' (no such file
    关于django链接数据库时,出现了找不到lib/libmysqlclient.21.dylib的问题。在网上百度了好久,终于用如下的命令解决了。版本信息虚拟环境python=3.7MYSQL=8.0.31mysqlc......
  • golang map的定义与使用
    Mapmap是一堆键值对的未排序集合,比如以身份证号作为唯一键来标识一个人的信息。map是引用类型,键必须支持相等运算符(==,!=)类型,比如:int,string,float等内建类型,只含......