我有以下查询可以很好地完成工作,但我想知道是否有更好的方法在WHERE
子句中执行此操作。
任何有关改进的意见/反馈都将不胜感激。
SELECT
C.ClientID,
C.FirstName + ' ' + C.LastName as FullName,
C.DOB,
G.Gender,
G.GenderIcon,
C.VerificationCode,
MAX(V.StartDate) as LastVisitDate
FROM
Client C
LEFT JOIN
Visit V ON C.ClientID = V.ClientID
INNER JOIN
Gender G ON C.GenderID = G.GenderID
WHERE
(FirstName like '%' + @Criteria + '%' or
LastName like '%' + @Criteria + '%' or
VerificationCode like '%' + @Criteria + '%')
答案 0 :(得分:0)
除了查看全文搜索之外的事情,没有。如果一列比其他列更容易包含匹配并且您有覆盖索引,则可以使用三个查询并单独运行它们,但是如果返回的列,它们可能都涉及表扫描。您也可以考虑首先查询LIKE @Criteria + '%'
,因为这可以使用索引来支持有效的范围扫描(在任何情况下都比读取所有行更有效)。但是,这并没有改善最坏的情况。