SQL Server性能的全文搜索

时间:2011-06-23 15:00:19

标签: sql-server sql-server-2008 full-text-search

我们正在使用Sql server 2008 r2。我们有一张表有大约4个lac记录。我们在表上使用全文索引(列标题,名称,描述)。我们在该表上有一个搜索过程,我们根据该关键字从表中选择10条记录。当我们使用SQL Server Management Studio直接在数据库上搜索时,根据关键字和第一次属于该关键字的表中的记录,过程需要0到3秒。但是第二次搜索会使搜索速度超过3秒。例如,如果我们将“xxx”作为关键字,那么假设在表中我们有1000条记录,那么在显示记录时只需要0秒。但是如果我们从关键字“yyy”中搜索,那么如果我们有22000条记录与之匹配则需要2秒。我不知道这里会出现什么问题。即使我为搜索传递了多个关键字,搜索结果时间也会增加。我是否需要继续检查SQL Server设置?请帮忙。

任何建议都将受到赞赏。

3 个答案:

答案 0 :(得分:0)

这很正常。产生的结果越多,产生输出所需的时间就越长。尝试对结果进行分页。如果你得到前100个结果1..100它会快得多。稍后您可以使用相同的查询,但101..200等。

另一个问题可能是RAM。您获得的结果越多,在返回之前保存它们所需的存储空间就越多。

答案 1 :(得分:0)

让我直截了当......

  1. 第一次运行查询比第二次慢
  2. 当您的查询返回更多记录时需要更长时间并且
  3. 当您搜索更多关键字时(增加过滤器的复杂性)需要更长的时间
  4. 我说得对吗?

    如果是这样,他们对我来说听起来都很正常。

    1. MSSQL进行某种缓存,因此后续运行相同的查询会更快
    2. 返回的记录越多,将数据从SQL服务器移动到您的计算机所需的时间越长
    3. 查询/条件越复杂,运行时间越长

答案 2 :(得分:0)

在RDBMS中,可以通过两种方式之一完成全文搜索。

  1. 如果没有事先编制索引,则必须扫描每一行以查找匹配关键字或
  2. 如果表格已专门为全文搜索编制索引(使用inverted index),则该索引用于标识与该关键字匹配的所有行。
  3. 如果您的查询有多个关键字,则在第一种方法中,每行必须搜索与关键字一样多的次数,而在第二种方法中,必须搜索每个关键字的索引。

    如果查询需要布尔运算(必须包括,不得包括等),则必须通过合并多个结果集来构造结果行。

    因此,对于多个关键字或布尔​​全文查询,应该自然地期望处理时间线性增加。