我有2个表, '[项目]与区[name]为nvarchar(255) '[交易]与现场[SHORT_DESCRIPTION]为nvarchar(3999)一个大 '像' 匹配查询
而且我需要这样做:
Select [Transaction].id, [Item].id
From [Transaction] inner join [Item]
on [Transaction].[short_description] like ('%' + [Item].[name] + '%')
上述工作如果局限于几件作品,未经过滤的却是只是在看20分钟,我取消。
我在[name]上有一个NC索引,但由于它的长度,我无法编制索引[short_description]。
[Transaction] has 320,000 rows
[Items] has 42,000.
这是13,860,000,000个组合。
有没有更好的方法来执行此查询? 我用全文戳了一下,但我其实并不那么熟悉,答案并没有跳出去。
任何意见赞赏!
您正在加入通配符。没有办法做得更快。它必须比较每一个单项与每一笔交易。 –
这可能是非规范化有意义的情况。您可以创建一个单独的表来交叉引用项目名称和事务简短描述。两个表上的触发器都会使交叉引用保持最新。如果您可以容忍一些陈旧的数据,您可以放弃触发器并安排工作以在适当的时间刷新交叉引用。 – HABO