为什么此查询使用两次 table 扫描?
Why this query uses two table scans?
我在 SQL Server 2008 R2 上有这个简单的查询:
SELECT Art.ID_Articulo,
conv.Factor AS PesoToneladas
FROM dbo.Articulos Art
LEFT JOIN dbo.Conversiones conv
ON conv.ID_Articulo = Art.ID_Articulo
AND conv.ID_Unidad1 = Art.ID_Unidad
Table Articulos
分别由 ID_Articulo
和 ID_Unidad
索引。
Table Conversiones
由 ID_Articulo
和 ID_Unidad1
单独索引。
执行计划显示 table 扫描 两个 table 占用大量资源。
我怎样才能找到原因?
您的查询中没有过滤器,考虑到这一点,您将聚合整个 2 tables。使用索引 sql 可能需要在查找上花费更多资源。所以做 table 扫描可能更便宜。
如果您将使用过滤器来减少数据sql可能会决定更改计划。
我在 SQL Server 2008 R2 上有这个简单的查询:
SELECT Art.ID_Articulo,
conv.Factor AS PesoToneladas
FROM dbo.Articulos Art
LEFT JOIN dbo.Conversiones conv
ON conv.ID_Articulo = Art.ID_Articulo
AND conv.ID_Unidad1 = Art.ID_Unidad
Table Articulos
分别由 ID_Articulo
和 ID_Unidad
索引。
Table Conversiones
由 ID_Articulo
和 ID_Unidad1
单独索引。
执行计划显示 table 扫描 两个 table 占用大量资源。
我怎样才能找到原因?
您的查询中没有过滤器,考虑到这一点,您将聚合整个 2 tables。使用索引 sql 可能需要在查找上花费更多资源。所以做 table 扫描可能更便宜。
如果您将使用过滤器来减少数据sql可能会决定更改计划。