2012-10-22 145 views
2

我有一个存储过程,其中包括4-5表连接操作和SP我执行两个不同的数据库(所有表定义是相同的)然后在DB-1,SP需要20-25秒,并在DB-2 SP采取1秒后执行,然后我重建DB-1索引,然后DB-1的SP快速工作与以前相比。表索引影响SQL连接查询执行时间吗?

因此,连接和表索引之间的任何关系?如果是的话,那么如何解决这类问题呢?

+0

您正在使用哪些DBMS?两个数据库上的所有设置是否相同?两个数据库中的数据是否相同? (大概不会!)数据的大小和分布情况如何:数据库之间的差异如何? –

+0

如果您使用的是Oracle(例如),是否以相同方式收集统计数据? –

+0

1)我正在使用SQL Server 2008 R2。 2)是的所有设置都是相同的。 3)两个数据库的数据都不相同。 –

回答

3

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

一般来说,加入到一个仅需要几行的表中就会使用索引(如果存在的话)。

加入到需要大多数表的表中将导致“全表扫描”(Oracle术语),其中DBMS将构建连接键的散列,并将其作为索引以便随后进行探测加入时使用正确的值。

请参阅http://en.wikipedia.org/wiki/Join_%28SQL%29#Implementation以及它参考的文章加入算法以便对这些文章进行良好的概述。

+0

感谢科林的宝贵回复.. –

相关问题