创建索引时候会考虑哪些因素?

哪些情况或字段适合加索引?
在经常需要搜索的列上
主键列上可以确保列的唯一性
在表与表的而连接条件上加上索引,可以加快连接查询的速度
在经常需要排序(order by),分组(group by)和的 distinct 列上加索引可以加快排序查询

哪些情况不适合创建索引?
查询中很少使用到的列
很少数据的列
定义为 text 和 image 和 bit 数据类型的列
表的修改大大多于查询

哪些情况会造成索引失效?
如果条件中有 or,即使其中有条件带索引也不会使用(这也是为什么要少用 or 的原因)
索引字段的值不能有 null 值
like 查询以%开头
在索引的列上使用表达式或者函数会使索引失效

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中,可以使用CREATE INDEX语句来创建索引。具体的语法是: ``` CREATE [UNIQUE] INDEX index_name ON table_name (column1, column2, ...); ``` 其中,index_name是索引的名称,table_name是要创建索引的表名,column1、column2等是要创建索引的列名。 在创建索引时,需要考虑以下因素: 1. 查询频率:应该优先考虑那些经常用于查询条件的列创建索引,以提高这些查询的性能。 2. 数据的唯一性:如果某个列具有唯一性约束,可以通过创建唯一索引来确保数据的唯一性。 3. 数据的大小和分布:对于大量重复值的列,创建索引的效果可能较差。而对于数据分布均匀的列,索引的效果可能更好。 4. 更新频率:当表中的数据频繁进行插入、更新和删除操作时,索引的维护可能带来额外的开销。在这种情况下,需要权衡查询性能和数据更新的频率。 5. 索引覆盖:如果一个查询只需要通过索引就能够返回结果,而不需要访问表中的实际数据行,则称之为索引覆盖。索引覆盖可以减少磁盘IO和内存消耗,提高查询性能。 6. 索引大小和内存消耗:索引占用磁盘空间和内存,特别是对于大表来说。需要评估索引的大小和内存消耗,确保系统有足够的资源来支持索引创建和使用。 7. 组合索引:对于多个列经常一起查询的情况,可以考虑创建组合索引。组合索引可以减少索引的数量,提高查询性能。 在创建索引时,需要综合考虑以上因素,并根据具体的业务需求和查询模式选择适当的列和索引类型进行创建。同时,也需要进行性能测试和监控,及时优化和调整索引以满足系统的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值