MySQL 索引
一、索引是什么
索引 就是目录
二、索引有什么用
索引的用处就是查东西的时候不用一页一页的翻找 你根据索引就能直接跳到精准的那一页
三、设计原则
1. 条件做索引
可以这么说,最适合做索引的字段是出现在where条件中的字段,或表连接子句中的字段。
2. 尽量唯一字段做索引
如果有某个字段重复量很少,那么给它加上索引来查询的效果是非常爽的。
3. 索引不可过多
过多则慢,每个索引都会占据磁盘空间,并降低写操作性能,在修改表的同时,索引也要进行更新,所以索引越多,所花费的时间越长,索引越多,会导致mysql优化器查询的时候出现选择困难症。
四、具体索引
1. 主键索引
这个不用想太多,主键自增非空直接扔给id字段,这个不用讲什么道理不道理的,就两字:规范。
2. 唯一索引
加上唯一索引之后,这个字段将不能出现重复值。(其实我有时候加这个索引不是为了查询,而是为了保证值的唯一性 ^.^ )
3. 普通索引
就是普通的索引,为了查询而存在。
4. 组合索引
一般来说,组合索引是用在保证组合唯一的需求上,比如a字段和b字段的组合值必须唯一,还需要知道的是,组合索引ab,当我只拿索引中的单个字段来查时,如where a="xxx" 时,会使用到这个索引,但是如果我where b="xxx"时,是不会使用到这个索引的,所以组合索引以左边索引为主索引。
5. 全文索引
还有一种叫全文索引,也就是在文本中搜索关键字的时候有这个索引需求,这个索引原来只支持MyISAM,InnoDB从MySQL5.6版本开始提供对全文索引的支持。
五、个人分享
建表的时候,结合业务思考一下这张表在查询时经常要出现在where条件中的字段,在心里按照使用频率排个序,挑频率最高的一到两个用来做索引。