表索引是否影响SQL连接查询执行时间?

时间:2012-10-22 13:34:54

标签: sql join sql-server-2008-r2

我有一个存储过程,包括4-5个表连接操作,SP i在两个不同的数据库上执行(所有表定义相同),然后在DB-1,SP需要20-25秒,在DB-2 SP中在重建DB-1索引之后需要1秒才能执行,然后DB-1的SP与之前相比可以快速执行。

那么连接和表索引之间有什么关系?如果是,那么如何解决这类问题?

1 个答案:

答案 0 :(得分:3)

我理解您的问题,询问索引的使用是否会影响连接性能。答案是响亮的“是”。

通常,连接到只需要几行的表将使用索引(如果存在)。

加入需要大部分表的表将导致“全表扫描”(Oracle术语),其中DBMS将使用此作为索引来构造连接键的散列,以便随后探测加入时使用的正确值。

有关这些内容的详细概述,请参阅http://en.wikipedia.org/wiki/Join_%28SQL%29#Implementation及其引用的关于加入算法的文章。