Mysql索引的类型 和 什么时候创建索引 及 创建索引有哪些需要注意的地方

1.Mysql索引的类型

普通索引(CREATE INDEX)

唯一索引 / 组合索引 / 复合索引,索引列的值必须唯一(CREATE UNIQUE INDEX)

多列索引,使用多个列去创建索引,多列索引反应在B+Tree里面其实就是相当于B+Tree的key是由多个列的值组成的。

主键索引(PRIMARY KEY),一个表只能有一个

全文索引(FULLTEXT INDEX),InnoDB 不支持

2.什么时候创建索引?

    建表的时候需要根据查询需求来创建索引

经常作为查询条件的字段 (WHERE 条件)

经常用作表连接的字段

经常出现在 order by, group by 之后的字段

     经常出现在以上这些语句后面字段需要添加索引增加查询的效率

3.创建索引有哪些需要注意的地方?

       非空字段 NOT NULL,Mysql 很难对空值作查询优化。反应在B+树结构里面就是空值无法去作比较这个时候索引就利用不上了。(很多互联网公司的建表规范要求索引字段有默认值)

      区分度高,离散度大,作为索引的字段值尽量不要有大量相同的值。反应在B+树里面就是当很多字段是一样的时候说明B+树里面很多key是相同的,所以需要大量的去比较这样效率就比较低。(一般不推荐枚举值就几个字段去建索引)

      索引的长度不要太长(比较好费时间),作为索引的时候在B+树里面作为一个key来存在的,主键索引一般使用自增的int值,因为int值很容易去比较,如果是字符串的时候去比较不同树之间结点key的时候,就需要做一个很长的比较。如果在字符串类型上面去做索引的话就一定要指定长度不能太长否则比较的时候就会耗费时间。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值