索引

索引的设计原则
索引设计不合理或者缺少索引都会对数据库性能造成不良影响

1、索引并非越多越好,一个表中如果有大量的索引,不仅浪费磁盘空间,而且会影响INSERT、DELETE、UPDATE等语句的性能,因为当表中的数据更改的同时,索引也会进行调整和更新
2、数据量小的表最好不要使用索引,由于数据量较小,查询所花费的时间可能比表里索引的时间还要短,索引可能不会产生优化的效果
3、避免对经常更新的表进行过多的索引,并且索引中的列尽可能少。对经常用于查询的字段应该创建少量索引,但要避免添加不必要的字段
4、 在条件表达式中经常用到的不同值较多的列上建立索引,在不同值很少的列(例如性别字段,只有男女两个取值)不要建立索引
5、 当唯一性是数据本身的特征时,指定唯一索引,可确保数据完整性并提高查询速度
6、 在频繁进行排序、分组的列上建立索引,如果排序的列有多个,可以在这些列上建立组合索引。
使用索引的场景
1、在经常需要搜索的列上,可以加快索引的速度
2、主键列上可以确保列的唯一性
3、在表与表的而连接条件上加上索引,可以加快连接查询的速度
4、在经常需要排序(order by),分组(group by)和的distinct 列上加索引 可以加快排序查询的时间, (单独order by 用不了索引,索引考虑加where 或加limit)
4、在一些where 之后的 < <= > >= BETWEEN IN 以及某个情况下的like 建立字段的索引(B-TREE)
5、like语句的 如果你对nickname字段建立了一个索引.当查询的时候的语句是 nickname lick ‘%ABC%’ 那么这个索引讲不会起到作用.而nickname lick ‘ABC%’ 那么将可以用到索引
6、索引不会包含NULL列,如果列中包含NULL值都将不会被包含在索引中,复合索引中如果有一列含有NULL值那么这个组合索引都将失效,一般需要给默认值0或者 ’ '字符串
7、使用短索引,如果你的一个字段是Char(32)或者int(32),在创建索引的时候指定前缀长度 比如前10个字符 (前提是多数值是唯一的…)那么短索引可以提高查询速度,并且可以减少磁盘的空间,也可以减少I/0操作
8、不要在列上进行运算,这样会使得mysql索引失效,也会进行全表扫描
9、选择越小的数据类型越好,因为通常越小的数据类型通常在磁盘,内存,cpu,缓存中 占用的空间很少,处理起来更快

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值