SQL优化--函数
不在索引列上做任何操作:计算、函数、类型转换,这些操作会导致索引失效,进而进行全表扫描。
MIN()和MAX()
添加索引可以优化MIN()和MAX()表达式。例如,要找到某一列的最小值,只需要查询对应B-Tree索引的最左端的记录即可。类似的,如果要查询列中的最大值,也只需要读取B-Tree索引的最后一条记录。
COUNT()
COUNT()有两个不同的作用:
- 统计某个列值的数量,即统计某列值不为NULL的个数。
- 统计行数。
当使用COUNT(*)时,统计的是行数,它会忽略所有的列而直接统计所有的行数。而在括号中指定了一个列的话,则统计的是这个列上值不为NULL的个数。
存在大量数据的情况下,如果我们需要查询当前数据表中有多少条记录,这个要怎么做呢?一般会为数据表设计一个id字段,这个字段会随着数据的添加而自增,完全可以采用MAX()函数查询
SELECT COUNT(*) FROM labels; //5.s SELECT MAX(id) FROM labels; //0.s
IS NULL
判断字段是否为空一般是不会应用索引的,因为索引是不索引空值
推荐方案:用其它相同功能的操作运算代替,如:a is not null 改为 a>0 或a>’’等。不允许字段为空,而用一个缺省值代替空值。
立志如山 静心求实
浙公网安备 33010602011771号