我有一个查询,最初看起来是这样的:
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% )
在一个有90000条记录的数据库上,执行这个查询大约需要7秒(显然所有的联接和点赞都很费力)。
我一直在尝试找到一种方法,通过对相关列进行全文搜索来缩短查询执行时间。然而,我还没有看到像这样有三个表联接的全文搜索示例,特别是因为我的联接条件不属于搜索项。
有办法在全文搜索中做到这一点吗?
@大卫
是的,ID上有索引。
我尝试过在CustomerAddress内容(CityName、PostalCode等)上添加索引,它将查询时间缩短到了3秒,但我仍然觉得这太慢了。
请注意,所有的文本字段(ID除外)都是nvarchar,Line1是nvarchar1000,因此这可能会影响速度,但仍然会影响速度。