-
MySQL性能优化技术总结:建立索引的规则与索引优化
资源介绍
索引的优化-建立索引的规则
索引的字段必须是经常作为查询条件的字段;
Like 'abc%'
字符串类型一定要加 ' ';
OR 语句需要在前后的字段都加索引;
.in 和 not in 也要慎用,否则会导致全表扫描,用exists代替
在order by、group by,on从句中建立索引;
Mysql会分析如果不用索引比用索引更快,就会自动采用全表扫描
说起提高数据库性能,索引是最物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行个正确的’create index’,查询速度就可能提高百倍千倍,这可真有诱惑力。可是天下没有免费的午餐,查询速度的提高是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的I/O。由于索引的存储结构不同于表的存储,一个表的索引所占空间比数据所占空间还大的情况经常发生。这意味着我们在写数据库的时候做了很多额外的工作,而这个工作只是为了提高读的效率。因此,我们建立一个索引,必须保证这个索引不会“亏本”。一般需要遵守这样的规则:
索引的字段必须是经常作为查询条件的字段;
如果索引多个字段,第一个字段要是经常作为查询条件的。如果只有第二个字段作为查询条件,这个索引不会起到作用;
索引的字段必须有足够的区分度;
Mysql 对于长字段支持前缀索引;
在order by、group by,on从句中建立索引。
索引覆盖:如果一个语句可以从索引上获取全部数据,就不需要通过索引再去读表,省了很多I/O.离散度的比较