为什么MS SQL中"没有数学函数在Where子句中"?

Dha*_*ana 0 sql-server performance

大多数SQL查询都没有对where子句进行数学运算.

将它们放在'where子句'上有什么问题?有任何性能问题吗?

例如:

SELECT*FROM Employee WHERE Salary*3 = 5000

cjk*_*cjk 11

如果where子句可以使用索引,则通常(但不总是)更快.在字段上使用数学运算将停止使用索引.

例如,如果您有一个包含一百万行的表和一个已建立索引的日期列,则此处的查询1将远远超过查询2(它们都将检索日期在过去7天内的所有行):

查询1:

select date from table where date > dateadd(d, -7, getdate())
Run Code Online (Sandbox Code Playgroud)

查询2:

select date from table where dateadd(d, 7, date) > getdate()
Run Code Online (Sandbox Code Playgroud)

在您的示例中,查询会更好:

select * from employee where salary = (5000 / 3)
Run Code Online (Sandbox Code Playgroud)