我有一个SQL Server 2005表,它有一个varchar(250)字段,其中包含我将用于搜索目的的关键字。我无法改变设计。数据看起来像这样......
个人,财产,成本,背书
针对这些关键字运行搜索查询的最有效方法是什么?我唯一能想到的是......
WHERE Keywords LIKE '%endorse%'
答案 0 :(得分:4)
由于规范化不是一种选择,因此下一个最佳选择是配置和使用全文搜索。这将保留一个内部搜索索引,使您可以轻松搜索数据。
像LIKE'%pattern%'这样的解决方案的问题是,这将产生一个全表扫描(或者可能是一个完整的索引扫描),它可能会对表中的大量数据产生锁定,这会减慢任何触及相关表格的操作。
答案 1 :(得分:1)
最有效的方法是规范化数据库设计。永远不会将CSV值存储到单个单元格中。 除了使用之外你可以考虑全文搜索。
答案 2 :(得分:0)
您可以使用PATINDEX()
USE AdventureWorks;
GO
SELECT PATINDEX('%ensure%',DocumentSummary)
FROM Production.Document
WHERE DocumentID = 3;
GO
http://msdn.microsoft.com/en-us/library/ms188395%28SQL.90%29.aspx