【发布时间】:2013-10-28 13:57:01
【问题描述】:
我在即时搜索时遇到了这样的情况,但这个查询有更多的 NOT IN 检查
ALTER PROC [dbo].[DPR_SP_GetEmployeeDetailsByKeyword]
@keyword varchar(10),
@hotelId int
AS
BEGIN
SELECT EmployeeDetails.EmployeeId,EmployeeDetails.SageEmployeeId,EmployeeDetails.FirstName,EmployeeDetails.LastName
FROM EmployeeDetails
WHERE (EmployeeDetails.EmployeeId NOT IN ( SELECT EmployeeWorksIn.EmployeeId
FROM EmployeeWorksIn
WHERE EmployeeWorksIn.HotelId=@hotelId
)
AND
EmployeeDetails.EmployeeId LIKE @keyword+'%')
OR
(EmployeeDetails.EmployeeId NOT IN ( SELECT EmployeeWorksIn.EmployeeId
FROM EmployeeWorksIn
WHERE EmployeeWorksIn.HotelId=@hotelId
)
AND
OR
(EmployeeDetails.EmployeeId NOT IN ( SELECT EmployeeWorksIn.EmployeeId
FROM EmployeeWorksIn
WHERE EmployeeWorksIn.HotelId=@hotelId
)
AND
EmployeeDetails.DateOfBirth LIKE @keyword+'%')
如何优化这个查询
谢谢
【问题讨论】:
-
当你分析这个时,瓶颈在哪里?使用 SQL Management Studio,您可以查看执行计划以确定这一点。
标签: sql sql-server stored-procedures query-optimization