怎么看sql语句有没有走索引(sql索引失效有哪些情况会失效)

MySQL中创建索引的原则,有以下几点:

1、表的主键、外键必须有索引

2、经常与其他表进行连接的表,在连接字段上应该建立索引

3、选择唯一性索引

唯一性索引unique index和一般索引normal index最大的差异就是在索引列上增加了一层唯一约束。

4、对于查询频率高的字段创建索引

5、对排序、分组、联合查询频率高的字段创建索引;

6、尽量使用前缀来索引

前缀索引是MySQL中的一个概念,在SQL Server和Oracle中没提出这个概念。前缀索引就是对文本的前几个字符(具体是几个字符在建立索引时指定)建立索引,这样建立起来的索引更小,所以查询更快。前缀索引能有效减小索引文件的大小,提高索引的速度,但是前缀索引也有它的坏处:MySQL 不能在 ORDER BY 或 GROUP BY 中使用前缀索引,也不能把它们用作覆盖索引(Covering Index)。

7、索引应该建在选择性高的字段上,在选择性低的字段上不必要建立索引,如:性别字段;

8、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

9、索引列不能参与计算,保持列“干净”;

10、对于定义为 text、image 和 bit 的数据类型的列不要建立索引

11、若在实际中,需要将多个列设置索引时,可以采用多列索引

12、一个表的索引的数目不宜太多

13、删除不再使用或者很少使用的索引,避免对执行计划造成负面影响;

MySQL什么时候不走索引?主要3种情况:

1、不满足走索引的条件,常见的情况有

1.1、不满足最左匹配原则索引的底层是一颗B 树,最左优先,以最左边的为起点任何连续的索引都能匹配上,同时遇到范围查询(>、<、between、like)就会停止匹配。);

1.2、查询条件使用了函数

1.3、or 操作有一个字段没有索引必须所有的or条件都必须是独立索引才能用到索引);

1.4、使用 like条件以%开头

2、走索引效率低于全表扫描,常见的情况有

2.1、查询条件对 null 做判断,而 null 的值很多;

2.2、一个字段区分度很小,比如:性别、状态;

3、需要回表的查询结果集过大,超过了配置的范围

(0)

相关推荐

  • SQL语句大全(常用的SQL语句)

    SQL语句大全(常用的SQL语句)

  • ACCESS执行SQL语句,ACCESS怎么写SQL语句

    access执行sql语句,access写sql语句,access怎么写sql语句 操作方法 01 昨天给一客户修改网站上的数据,N年前的老项目了,用的是ACCESS数据库,平时一直都用MySQL,找 ...

  • 怎么通过SQL语句查看MySQL数据库的表空间状态

    MySQL数据库提供丰富的sql命令,可以很方便的查看数据库表空间状态 操作方法 01 查看数据库的索引空间大小 在MySQL Workbench中运行以下SQL语句: -- 以GB为单位 SELEC ...

  • ORACLE SQL语句优化技术分析

    为了让更多的新手受益,我抽空把SQL语句优化部分进行了整理,希望大家一起进步。 一、操作符优化1、IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。但是用I ...

  • 经典常用SQL语句优化技巧总结大全

    本文实例总结了常用SQL语句优化技巧.分享给大家供大家参考,具体如下: 除了建立索引之外,保持良好的SQL语句编写习惯将会降低SQL性能问题发生. ①通过变量的方式来设置参数 好: stringsql ...

  • 通过Excel生成批量SQL语句(Excel快速生成SQL更新语句)

    们经常会遇到这样的要求:用户给发过来一些数据,要我们直接给存放到数据库里面,有的是Insert,有的是Update等等,少量的数据我们可以采取最原始的办法,也就是在SQL里面用Insert into来 ...

  • PL/SQL Developer中SQL语句如何格式化

    一般情况下,我们写出来的SQL语句都不会很短. 在PL/SQL Developer 中,有时在SQL窗口中写的代码过长,不容易被看懂,而Developer为我们提供了代码格式化的功能,让我们能清晰的看 ...

  • sql语句as关键字的使用.

    as是别名关键字. 一般我们是这么使用. select 字段 as 别名 select 字段 别名 select 别名=字段 在sqlserver中这三种显示结果都是一模一样的. 但是我们不推荐后两种 ...

  • sql语句中聚合函数的使用

    我们常用的聚合函数中. count()  求总数 sum()    求和 avg()      求平均 max()和min()  求最大和最小 操作方法 01 我的电脑是Windows7 64位,所以 ...

  • navicatforMysql:[3]navicat如何执行sql语句

    Navicat for Mysql 是一款很方便的mysql客户端工具,能够很好的提供操作数据库可视界面,在同类型的软件中,占有极高的市场份额.今天小天我就带领大家走进这款优秀的软件,看navicat ...