1.一般等到主体业务功能开发完毕,把涉及到该表相关sql都要拿出来分析之后再建立索引。
2、联合索引尽量覆盖条件
让每一个联合索引都尽量去包含sql语句里的where、order by、group by的字段,还要确保这些联合索引的字段顺序尽量满足sql查询的最左前缀原则。
3、不要在值比较少的字段上建立索引
比如一张表有几百万行记录,其中有性别字段,
其值只有男或女,
如果对这种字段建立索引的话,索引树里只包含男女两种值,没
法进行快速的二分查找,用索引就没有太大的意义。
一般建立索引,尽量使用值比较多的字段,这样才能发挥出B+树快速二分查
找的优势。
4、长字符串可以采用前缀索引
比如varchar(255),可以针对这个字段的前20个字符建立索引,也就是对这个字段里的每个值的前20个字符放在索引树里,类似于 KEY
index(name(20),age,position)。
此时你在where条件里搜索的时候,如果是根据name字段来搜索,那么此时就会先到索引树里根据name字段的前20个字符去搜索,定位到之后前20个字符的前缀匹配的部分数据之后,再回到聚簇索引提取出来
完整name字段值进行比对.
5、where与order by冲突时优先where
大多数情况基于索引进行where筛选往往可以最快速度筛选出你要的少部分数据,然后做排序的成本可能会小很多。