我是SQL Server的新手。我不清楚索引如何帮助加入SQL Server。当我们连接两个表时,索引是如何发生的,它以何种方式执行查询?是否有任何链接可以阅读以理解这一点?
通过这个VIDEO ..
,我理解了where子句的工作原理是否有任何其他视频或文章链接可以了解加入与索引
答案 0 :(得分:3)
有三种方法可以进行加入:
使用嵌套循环扫描连接的一侧,探测另一侧(搜索关键字)。如果有一个杠杆指数,探针可以获得巨大的推动。见Understanding Nested Loops Joins
哈希扫描连接的一端,在内存中构建hash table,扫描另一端并匹配哈希表中的键。没有索引有益于散列连接。请参阅Understanding Hash Joins。
合并连接需要对两边进行排序。它们通过同时迭代双方并依靠排序顺序保证来确定密钥是否匹配,无需向前看或保持状态。为了提供排序保证,可以利用索引。请参阅Understanding Merge Joins。
我建议您阅读Understanding how SQL Server executes a query和How to analyse SQL Server performance。通常,您应该以在连接之前进行过滤的方式设计数据模型和查询。如果你需要加入大数据集索引可能有所帮助,但战斗已经失败。
答案 1 :(得分:0)
在寻找视频之前,您必须阅读至少一本书!
使用索引,服务器可以比扫描所有记录更快地找到相应的行(如果表有很多行,结果很少)。例如,如果表有10,000,000行,并且查询必须返回20行 - 使用索引,服务器可以读取平均~20 MB的数据(10M * 32位索引的50%)而不是1500 MB(50%例如10M行) * 300字节)。