我需要从包含多个值之一的文本字段中提取信息。 SQL 看起来像:
SELECT fieldname
FROM table
WHERE bigtextfield LIKE '%val1%'
OR bigtextfield LIKE '%val2%'
OR bigtextfield LIKE '%val3%'
.
.
.
OR bigtextfield LIKE '%valn%'
我的问题是:当值的数量接近数百甚至数千时,效率如何?有更好的方法吗?
一种解决方案是创建一个新的表/列,其中仅包含我所追求的值并执行以下操作:
SELECT fieldname
FROM othertable
WHERE value IN ('val1', 'val2', 'val3', ... 'valn')
我想这会更有效率,因为它只需要进行精确的字符串匹配。这样做的问题是要使该表保持最新需要大量工作。
顺便说一句,我使用的是 MS SQL Server 2005。
最佳答案
此功能已存在于大多数 SQL 引擎中,包括 MS SQL Server 2005。它称为全文索引;这里有一些资源:
关于sql - 具有大量子句的 SQL 'LIKE' 语句的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1772203/