在一个千万级别的数据库查询中,提升查询效率方法:
1. 数据库设计方面
- 对查询优化,要尽量避免全表扫描,首先考虑在 where 和 orderBy 涉及的列上建索引
- 应尽量避免在 where 字句中对 null 值进行判断,否则导致引擎放弃索引而进行全表扫描,如:select id from t where num is null,可以在num列上设置默认值为0,确保表中num列没有null值,然后这样查询:select id from t where num=0
- 在使用索引字段作为条件时,如果是复合索引,尽可能的让 字段顺序与索引顺序一致
- 并不是所有索引对查询都有效,当索引列有大量数据重复时,sql查询可能不会去利用索引,如:表中有字段sex,male和female几乎各占一半,那么即使在sex上建了索引也对查询效率起不了作用
- 尽可能的使用 varchar 代替 char ,首先边长字段存储空间小,可以节省存储空间,其次对于查询来说,在相对较小的字段内搜索效率高些
2. sql语句方面
- 应尽量避免在 where 字句中使用 !=