我有一个搜索程序,必须在五个表中搜索相同的字符串。我想知道哪个读取性能更好?
答案 0 :(得分:3)
我认为在处理性能时需要考虑的一点是,读取数据几乎总是比读取数据,移动数据然后再次读取更快,而不仅仅是读取一次。
所以从您的问题来看,如果您将所有表组合成一个单独的临时表或表变量,这肯定会很慢,因为它必须查询所有数据并移动它(取决于您使用的数据量)这可能会或可能不会产生太大的影响)。关于你的表结构,只有当相同的字符串在整个表中显示多次时,对字符串的索引才真正有效。
即。如果您正在搜索月份(1月,2月,3月等),那么索引会很棒,因为它只能是12个选项中的1个,重复值的次数越多/可供选择的选项越少索引越好。如果您正在搜索用户输入的值(&#34;我正在编写我的人生故事......&#34;),并且您正在搜索该字符串中的单词,那么索引可能没有任何区别。< / p>
因此,假设您的查询正在搜索,在我的示例中,您可以执行以下操作:
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'
这会将您的结果合并到一个结果集中,而不会移动数据。同样,解释器将能够找到使用每个表上提供的索引查询每个表的最有效方法。