select count(*) from T 可以用到索引吗?

来源:互联网 发布:java面试自我评价 编辑:程序博客网 时间:2024/06/05 00:42

1、如果索引列有非空约束,则可以用到索引;

2、或者采用 select count(*) from T where 索引列 is not null;也可以用到索引,即使索引列没有非空约束。

当表字段很多,并且字段长度大多很长,这时如果在一个非空且长度很短的列建一个索引,这时索引的体积相对表来说很小,那么索引读的效率就高很多;

sum(索引列)和avg(索引列)和count(*)同理,都要注意非空问题;

min(索引列)和max(索引列)则不需要考虑空值问题;


select max(索引列),min(索引列) from t; 

如果索引列没有非空约束,则走全表扫描;如果索引列有非空约束,则走INDEX FAST FULL SCAN


select max, min 
  from (select max(索引列) max from t ) a,
       (select min(索引列) min from t ) b;

走INDEX FULL SCAN (MIN/MAX)更高效

0 0