我有一个查询,原来是这样的:如何在SQL Server中的左连接表上全文搜索多个条件?
select c.Id, c.Name, c.CountryCode, c.CustomerNumber, cacc.AccountNumber, ca.Line1, ca.CityName, ca.PostalCode
from dbo.Customer as c
left join dbo.CustomerAddress as ca on ca.CustomerId = c.Id
left join dbo.CustomerAccount as cacc on cacc.CustomerId = c.Id
where c.CountryCode = 'XX' and (cacc.AccountNumber like '%C17%' or c.Name like '%op%'
or ca.Line1 like '%ae%' or ca.CityName like '%ab%' or ca.PostalCode like '%10%')
在90,000条记录的数据库此查询需要大约7秒执行(显然所有的连接和喜欢被征税)。
我一直在试图找到一种方法,使查询执行时间与全文搜索有关的列。但是,我还没有看到有这样的三个表连接的全文搜索的例子,特别是因为我的连接条件不是搜索词的一部分。
有没有办法在全文搜索中做到这一点?
@大卫
是的,有对IDS进行索引。
我已经尝试在CustomerAddress东西(CityName,PostalCode等)上添加索引,并且它将查询减少到3秒,但我仍然发现对于这样的事情太慢。
请注意,所有文本字段(除了ID)都是nvarchars,Line1是一个nvarchar 1000,因此可能会影响速度,但仍然如此。