请看下面SQL的执行效率:
select * from iroomtypeprice where amount/30< 1000(11秒)
当改写成下面的SQL语句时效率明显提高了:
select * from iroomtypeprice where amount< 1000*30(<1秒)
语句1因为要对没没条记录的字段amount做一个/的运算,所以必须进行全表扫描,表的合适索引不会起作用;而语句二就会用到表上的合适索引。因此效率明显提高。
另外,在where后面尽量少用substring等函数,这样也可以提高执行效率,如:
select * from iroomtypeprice where substring(card_no,1,4)='5378'(13秒)改成
select * from iroomtypeprice where card_no like '5378%'(<1秒)
select * from iroomtypeprice wher econvert(char(10),date,112)='19991201'(10秒)
select * from iroomtypeprice where date= '1999/12/01'(< 1秒)