索引是数据库应用开发中永恒的话题 。
很多开发人员在实际开发过程中,一定会遇到各种各样的坑。
总结起来,基本的索引创建顺序是:
WHERE -> JOIN -> ORDER BY -> SELECT
记住这个顺序,基本上能满足绝大部分的需要。SELECT这一层一般情况下不用创建。
什么意思呢?
- 首先在where条件里头,找针对性的表的列建索引,至于是自左向右或自右向左,各DBMS可能略有不同,试下便知
- 紧接着,找JOIN列, 看他们有没有索引。如果没有,帮着建一个。
- 然后再看order by, 如果没有索引,可以辅助性的建一个。order by在有索引和没有索引的情况下,性能相差还是很大的。
- SELECT列,某些情况下,在选择的列数比较少的情况下,如果可选择性很强,使用索引会让DB直接走的索引数据而不走表数据,那样也会提高效率
但是因为原始表定义,很多大部分都包含了上述各条款中的索引,所以,最后往往只需要添加少量的索引。
复杂的查询语句,可以细细分析,层层分解。