前文提到查询记录总条数有时候会使用到where来限定查询范围。
从优化原则来说,where可能会降低效率。
但是如果where设定的合理,符合一定条件,也可以实现查询优化效果。
如果条件是索引列,那么查询效率可能会较高。
不过这是对于一般的sql查询,如果前提是“查询记录总条数”,那就不一定。这需要有清醒的认识。
如果这个索引列具有跟自增长字段一致的顺序且连续,这个对于“查询记录总条数”是很好的,在缩小数据集范围的同时,还可以利用上文给出的小技巧,利用自增长字段高效得出结果。
那么在利用这一条件时,需要注意以下几点:
1.不要对时间字段使用函数
例如:year(时间字段名)
2.正确使用时间段
尽量给出开始和结束时间,尽量避免单独使用大于或小于号
3.使用between比使用大于号+小于号要好一些
当条件不具有连续性和顺序性时,如果能大量缩减数据集范围,也会有较高效率。但是就不能使用上文的小技巧了。
select count(*) from 表名where 条件表达式;
要清楚,这时候高效是因为数据过滤后较少而达成。
当条件不具有连续性和顺序性,且过滤后数据集