2012-05-14 73 views
0

我们的应用程序连接到SQL Server数据库。有一列是nvarchar(max)已添加必须包含在搜索中。这个数据库中的记录数量只有成千上万,而且只有几百人在使用该应用程序。我被告知探索全文搜索,这是必要的吗?正在搜索nvarchar(max)字段

+0

如果你打算在里面搜索很多,那么可能。使用BigLumpoftext查找所有行像'%X'或/和'%XY%'或不像'%XYZ%'那样的事情,你做的越多,它就越有价值。 –

回答

5

这就像问我在5英里外工作,我被告知考虑购买一辆车。这是必要的吗?太多的变量给你一个简单而正确的答案你的问题。例如,这是一个很好的散步吗?有公共交通吗?你的日程表是否灵活?你需要远离午餐或下班后跑腿吗?

如果您的典型搜索是WHERE col LIKE '%foo%',但是否有必要,全文搜索可以提供帮助 - 但是否有必要取决于此列的大小,您的搜索是否为真通配符搜索,以及您对毫秒或纳秒查询的容差,并发量,甚至看似无关的东西,比如数据是否总是在内存中,并且可以更有效地搜索。

更好的答案是,你应该尝试一下。使用数据副本填充表格,添加全文索引,然后通过使用全文查询而不是LIKE来查看典型工作负载是否得到改进。它可能会,但是我们无法确切地知道,即使你添加更多细节而不是球场排数。

0

在类似的情况下,我最终创建了一个更加便于搜索和索引的表结构,然后设置一个批处理作业以将记录从实时数据库复制到报表。

在我的情况下,原始数据并没有接近需要一个nvarchar(最大)列,所以我可以逃避这一点。你的旅费可能会改变。无论如何,答案是“尝试一些事情,看看对你有用”。