嵌套循环算法 - 索引如何改进它?

Nested Loop Algorithm - How indexes improve it?

我正在研究 SQL 中的嵌套循环算法如何用于联接,但无法理解索引如何提高其性能。据我了解,该算法与任何标准嵌套 FOR 循环非常相似,其中一个表的索引如何提供帮助,因为无论如何都必须循环两个表中的所有行?

我是一名新工程师,在我最近引入的低效连接导致生产事件发生后,我对数据库优化的兴趣达到了顶峰。任何深入研究的资源都将不胜感激!

提前致谢

他们不是。这里的技巧是这样的:

as all the rows in both the tables have to be looped over anyhow?

如果是这样,则没有索引改进。

如果在 table a 上循环,但是在 table b 上执行 LOOKUP 那么它根本不需要在第二个 table 上循环 - 它在 ONE 上循环table,然后在第二个 table 上查找。哪个索引可以提供很大帮助。

“嵌套循环”——严格来说——是指嵌套的两个循环,也就是你所描述的。

有时,内部循环被索引查找所取代,这是 O(log n) 而不是 O(n)。我真的不认为这是嵌套循环连接。但是,在某些数据库中,解释计划仍将其显示为嵌套循环。