写SQL时尽量不要对字段进行运算操作
2008-02-16 23:29
405 查看
有时我们在做项目时,需要在SQL文里面对某个字段经过运算后再与一个常量比较:那么这将会对运行性能产生很大的影响:
请看下面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秒)
文章引用自:
请看下面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秒)
文章引用自:
相关文章推荐
- 对同一个表中不同的字段进行升序蒋序的操作sql中排序的误区
- 利用SQL语句进行添加、删除、修改字段,表与字段的基本操作,数据库备份等
- 如何编写一条SQL实现根据某个字段的条件对某个字段进行不同的update操作
- sql语句中尽量不要使用复杂的函数运算
- 如果不使用判断操作保证任意一个数如果大于30则为30,否则为原值(SQL中排序时对字段值进行最大限制)
- c里面的数组尽量不要去做函数调用运算等操作
- 数据库删除操作尽量不要做物理删除,用状态字段来表示
- SQL使用游标遍历多层table获取每行的数据进行操作
- java 纯sql 操作blob..字段
- SQL SERVER 2005中使用sql语句对xml 文件和其数据的进行操作(很全面)
- 注意 sizeof 中不要有复杂运算操作
- oracle 中 对大数据量 字段进行update操作
- SQL语句 对表的某一个字段进行排重 查询
- Oracle:SQL语句--对表的操作——添加一个字段 (即 添加 一列)
- Oracle 中文字段进行排序的sql语句
- T-SQL - 访问远程数据库并对其数据表进行操作
- 对重复的记录使用SQL进行查询和删除等操作
- 学习 SQL 语句 - Select(6): 字段运算
- 在C#中利用SQL语句与数据库进行操作
- Oracle 在SQL语句中如何获取系统当前时间并进行操作