如何使用索引

    首先索引有窄索引和宽索引两个概念,窄索引是指索引的列数为1~2,宽索引就是说索引的列数大于2。

因为窄索引的效率要高于宽索引,所以能用窄索引就不要使用宽索引

    那么对单字段索引和复合索引应该如何使用?

目录

单字段索引的情况:

复合索引的优势:

两者的比较:


单字段索引的情况:

1.表的主键,外键必须有索引

2.数据量超过300的表应该有索引

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

4.经常出现在where字句中的字段,特点是大表的字段,应该建立索引

5.索引应该建在选择性高的字段上

6.索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建立索引

7.尽量用单字段索引代替复合索引,复合索引的建立需要仔细的斟酌

复合索引的优势:

1.单字段索引很少甚至没有

2.复合索引的几个字段经常同时以AND的方式出现在where语句

当where语句中的条件是OR时,索引不起作用。

两者的比较:

    以一个sql语句来举例:SELECT * FROM STUDENT WHERE SEX="男" AND SAGE=18;

    若在sexsage 两个字段分别创建了单字段索引,mysql查询每次只能使用一个索引,虽然对于未添加索引时使用全盘扫描,我们的效率提升了很多,但如果在sexsage两个字段添加复合索引,效率会跟高,如: 创建(sex, age,teacher)的复合索引,那么其实相当于创建了(area,age,teacher)、(area,age)、(area)三个索引,这被称为最佳左前缀特性

那对于两者优缺点的比较:

1.对于具有2个用and连接条件的语句,且2个列之间的关联度较低的情况下,复合索引有一定优势。
2.对于具有2个用and连接条件的语句,且2个列之间的关联度较高的情况下,复合索引有很大优势。
3.对于具有2个用or连接条件的语句,单索引有一定优势,因为这种情况下复合索引将会导致全表扫描,而前者可以用到indexmerge的优化。
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值