我有一个搜索查询,我继承并试图优化。我很好奇听到有没有人有最佳做法和建议。生产服务器仍然是SQL Server 2000。优化多列LIKE SQL查询的一些最佳实践是什么?
该查询是一个高级客户搜索存储过程,它接受5个不同的搜索条件参数(即名字,姓氏,地址,电话等)来搜索数百万条记录表。 WHERE子句中所有连接的列和列都有索引。另外,最初的查询将记录转储为一个用于寻呼容量的表变量。
INSERT INTO @tempCustTable (CustomerID, FirstName, LastName, City, StateProvince, Zip, PhoneNumber)
SELECT DISTINCT cu.CustomerID, cu.FirstName, cu.LastName, a.City,
a.StateProvince, a.Zip, p.PhoneNumber
FROM Customer cu WITH(NOLOCK)
LEFT OUTER JOIN Address a WITH(NOLOCK) ON cu.CustomerID = a.CustomerID
LEFT OUTER JOIN Phone p WITH(NOLOCK) ON cu.CustomerID = p.CustomerID
WHERE (cu.LastName = @LastName OR cu.LastName LIKE @LastName + '%')
AND (@FirstName IS NULL OR cu.FirstName = @FirstName OR cu.FirstName LIKE @FirstName + '%')
AND (@StateProvince = '' OR a.StateProvince LIKE @StateProvince)
AND (@City = '' OR a.City LIKE @City + '%')
AND (@Zip = '' OR a.Zip = @Zip OR a.Zip LIKE @Zip + '%')
ORDER BY cu.LastName, cu.FirstName
有没有人有任何关于如何提高查询性能的建议?
好问题。我需要再次查询SQL OR来查看它是否评估双方,而不管左侧的返回。 – JamesEggers 2009-01-23 15:21:39