如果我有以下数据:
.[Required]
I want one grape
I want one orange
I want one apple
I want one carrot
I want one watermelon
.[Name]
grape
orange
apple
我想要做的就是告诉我用户正在寻找水果的所有结果。这只是一个例子,我正在查看一个包含大约100万条记录和4000多个字符的字符串字段的表。我期待一个有点慢的结果,我知道表格可以确定结构更好,但我无法控制。这是我本来会有的查询,但它似乎没有做我想要的。它给出了每一条记录。是的,[#Fruit]
是临时表。
SELECT * FROM [Results]
JOIN [#Fruit] ON
'%'+[Results].[Required]+'%' LIKE [#Fruit].[Name]
理想情况下,我的输出应该是以下3行:
I want one grape
I want one orange
I want one apple
答案 0 :(得分:1)
这个主题让我感兴趣,所以我做了一些搜索。
我认为你要做的是Full Text Search 。
如果表格中尚未创建全文索引,则需要创建全文索引。 (Create FULLTEXT Index)。
这应该比执行"喜欢"。
更快我采取的另一种方法是创建元数据表,并在更新(或创建)[Result] .Required值时自行维护信息。
答案 1 :(得分:0)
这看起来或多或少可行,但我从Fruit表开始只是为了概念清晰。
以下是我将如何构建这一点,忽略所有性能/速度/规范化问题(另请注意我在LIKE比较中切换了变量):
SELECT f.name, r.required
FROM fruits f
JOIN results r ON r.required LIKE CONCAT('%', f.name, '%')
...并且可能添加LIMIT 10
以防止查询在您测试时浪费时间。
这个结构将: