sql-server - 如何优化SQL Server查询的where子句

标签 sql-server sql-server-2008 sql-server-2016

员工

ID Name DOJ
------------------
1   A   2018-12-12
2   B   2018-11-12
......

查询:

SELECT NAME 
FROM Employee 
WHERE YEAR(DOJ) = 2018

employee表数据量很大,如何优化?

最佳答案

您可以避免在 where 子句中使用

SELECT NAME 
FROM Employee e
WHERE DOJ >= '20180101' and DOJ <= '20181231';

因此,该查询将被称为 SARGable,它可以利用索引(如果已经存在)

对于您当前的查询,在 where 子句中使用任何函数,这将使查询不可搜索。因此,SQL 优化器无法在 DOJ 上使用索引,即使索引存在也是如此。

小建议总是使用 ANSI SQL 日期格式 YYYYMMDD

关于sql-server - 如何优化SQL Server查询的where子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50014756/

相关文章:

sql-server - 在 MS SQL Server 中检测列更改的最有效方法

sql - 来自查询执行计划的查询优化

sql - SELECT FROM WHERE X NOT IN Y 的意外结果

sql - 合并来自同一数据集的不同时期的总和

sql - 如何统计SQL Server中数据库的所有存储过程?

使用 COUNT 进行 SQL 查询清理

sql - 创建 View 和 For Json 子句

sql - 多个主键

sql-server - 使用在基于集合的插入期间创建的 ID 更新现有临时表

sql - sys.fn_dblog 的开始和结束 LSN 参数应该是什么格式?