博客
关于我
Mysql什么时候建索引
阅读量:794 次
发布时间:2023-02-11

本文共 851 字,大约阅读时间需要 2 分钟。

那些情况需要建索引

在数据库设计中,索引是提高查询性能的重要工具。以下是一些需要建索引的情况:

  • 主键自动创建唯一索引

    在数据库设计中,主键通常会自动生成唯一索引。这是因为主键的定义本身就具备唯一性约束,通过索引可以加快主键查询的速度。

  • 频繁作为查询条件的字段应创建索引

    如果某个字段经常用于查询条件,手动为其创建索引可以显著提升查询效率。尤其是那些经常用于筛选数据的字段,索引能大大减少查询时间。

  • 查询中与其他表关联的字段,外键关系建立索引

    在处理外键关联时,为外键字段建立索引可以大大提升查询性能。尤其是在涉及多个表的复杂查询中,索引能有效减少连接时间。

  • 单键/组合索引的问题,组合索引性价比更高

    在索引设计中,组合索引通常比单键索引更高效。例如,在常用字段之间建立联合索引,可以比分别为每个字段建立索引更节省空间,同时提升查询性能。

  • 查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度

    对于需要排序的字段,建议为其建立索引。通过索引可以快速定位到排序所需的记录位置,从而显著减少排序操作的时间。

  • 查询中统计或分组字段

    在需要对数据进行统计或分组操作时,为相关字段建立索引可以大大提升查询效率。索引能够快速定位到相关记录,减少数据扫描的次数。

  • 那些情况下不需要建索引

  • 表记录太少

    如果表中的记录数量非常少,甚至不到1000条,索引的收益通常会低于成本。手动为如此小规模的数据建立索引往往是浪费资源。

  • 经常增删改的表或者字段

    对于经常发生增删改的字段或表,索引的维护成本会变得非常高。手动维护过多的索引会增加数据库管理的复杂性。

  • where条件里用不到的字段不需要创建索引

    如果某个字段在查询中没有被用作where条件,手动为其建立索引就显得多余。索引的主要价值在于加速特定查询的执行速度,而不在于字段是否被查询。

  • 过滤性不好的不适合做索引(比如性别,查询后还是一大堆数据)

    对于过滤性较差的字段,建立索引并不能显著提升查询性能。例如性别字段,查询后仍然可能返回大量数据,索引的收益相对较低。

  • 转载地址:http://vabfk.baihongyu.com/

    你可能感兴趣的文章
    mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
    查看>>
    mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
    查看>>
    MySql 查询以逗号分隔的字符串的方法(正则)
    查看>>
    MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
    查看>>
    mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
    查看>>
    mysql 死锁(先delete 后insert)日志分析
    查看>>
    MySQL 死锁了,怎么办?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 添加列,修改列,删除列
    查看>>
    mysql 添加索引
    查看>>
    MySQL 添加索引,删除索引及其用法
    查看>>
    MySQL 用 limit 为什么会影响性能?
    查看>>
    MySQL 用 limit 为什么会影响性能?有什么优化方案?
    查看>>
    MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)
    查看>>
    mysql 用户管理和权限设置
    查看>>
    mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
    查看>>
    MySQL 的instr函数
    查看>>
    mysql 的存储引擎介绍
    查看>>
    MySQL 的存储引擎有哪些?为什么常用InnoDB?
    查看>>