我有一个查询,它首先在内部执行联接cte
,然后基于 cte 与其他表联接,并通过一些聚合执行 group by 并获取前 15 条记录。
此查询在 Azure SQL 数据库上运行需要 23 小时。
细节:
Azure 数据库定价层:S6,具有 750GB 存储空间,剩余 20% 未使用存储空间
TableName rows TotalSpaceGB UsedSpaceGB UnusedSpaceGB
table2 332,318,173 117.72 117.71 0.01
table3 153,700,352 60.78 60.76 0.01
table1 15,339,815 13.21 13.20 0.01
abctable 1,232,868 0.81 0.80 0.00
带查询的实际执行计划
未使用查询的实际执行计划sp_WhoIsActive
等待类型:(14ms)PAGEIOLATCH_SH:dev-db:1(*)
或NULL
有时。得到这个使用sp_WhoIsActive
.
笔记:
实际执行计划是从正在运行的查询中获取的,如此答案所示
该表包含主键上的聚集索引和其他字段上的非聚集索引,我没有在过滤器、联接或排序依据中使用这些索引。
table1
是 的父级table2
并且table2
是 的父级table3
任何意见或建议都非常值得赞赏。