SQL Server:一个表全文索引与多个表全文索引



我有一个搜索过程,必须在五个表中搜索相同的字符串。我想知道哪个在读取性能方面更好?

  • 将所有表格合并到一个表格中,然后在该表格上添加全文索引
  • 在所有这些表中创建全文索引并对所有表发出查询,然后合并结果

我认为在处理性能时要考虑的是,读取数据几乎总是比读取数据、移动数据然后再次读取而不仅仅是读取一次更快。

因此,从您的问题来看,如果您将所有表合并为一个临时表或表变量,这肯定会很慢,因为它必须查询所有数据并移动它(取决于您正在使用多少数据,这可能会或可能不会产生太大差异(。与表结构一样,只有当同一字符串在整个表中多次出现时,对字符串进行索引才会真正有效。

也就是说,如果您搜索月份(1 月、2 月、3 月等(,索引会很棒,因为它只能是 12 个选项中的 1 个,并且值重复的次数越多/可供选择的选项越少,索引就越好。如果您正在搜索用户输入的值("我正在写我的生活故事......"(,并且您正在搜索该字符串中的单词,则索引可能不会产生任何差异。

因此,假设您的查询正在搜索,在我的示例月份中,您可以执行以下操作:

SELECT value
FROM (
      SELECT value FROM table1
      UNION
      SELECT value FROM table2
      UNION
      SELECT value FROM table3
      UNION
      SELECT value FROM table4
      UNION
      SELECT value FROM table5
) t
WHERE t.value = 'Jan'

这会将结果合并到单个结果集中,而无需移动数据。此外,解释器将能够找到最有效的方法来使用每个表上提供的索引来查询每个表。

最新更新