• 面试系列MySql:索引优化


    优点:

    1、提高数据检索的效率,降低数据库的IO成本。
    2、通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗。

    缺点:

    1、虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段。实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也是要占用空间。

    使用条件:
    哪些情况需要创建索引?

    1、主键自动建立唯一索引
    2、频繁作为查询条件的字段应该创建索引
    3、查询中与其它表关联的字段,外键关系建立索引
    4、查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度
    5、查询中统计或者分组字段

    哪些情况不需要创建索引?

    1、表记录太少。
    2、经常增删改的表或者字段。Why:提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
    3、Where条件里用不到的字段不创建索引。

    索引失效的一些情况

    1、查询条件中有or
    2、like查询是以'%'开头
    3、对查询的列上有运算或者函数的
    4、如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
    5、左连接查询或者右连接查询查询关联的字段编码格式不一样
    6、如果mysql估计使用全表扫描要比使用索引快,则不使用索引
    7、如果查询中没有用到联合索引的第一个字段,则不会走索引 

  • 相关阅读:
    第一章 Scala概述
    【05】Yarn
    详解clickhouse分区目录的合并过程
    .NET高级面试指南专题二十六【适配器模式介绍,用于将一个类的接口转换成客户端所期待的另一个接口】
    gitee-git使用文档总结
    k8s如何强制删除pod&pv&pvc和ns&namespace方法
    C++:array,模板特化 详解
    浅谈大数据之Flink-2
    其他变量定义、简单四则运算、数组
    Module build failed (from ./node_modules/postcss-loader/src/index.js):
  • 原文地址:https://blog.csdn.net/CancerKing/article/details/128077793