出于测试目的,我部署了:
- 带有一些数据的 Azure SQL DB
- Azure Analysis Services 中连接到 SQL DB 以获取数据的表格模型
该测试旨在比较针对 Azure SQL DB 的查询速度与针对表格模型的查询速度。
测试中的表格模型由 4 个维度组成,但查询中仅使用了其中的 2 个维度。我想对表格模型的查询不能处理超过 2 个维度?
查询从本地计算机上运行的 .NET 控制台应用程序运行。针对表格模型的查询使用 ADOMD.NET 客户端库,并使用 DAX(我没有使用过的一种语言)编写,并且来自 SSMS 中的设计工具。针对 SQL DB 的查询使用 ADO.NET 客户端库(包含一个聚合函数、7 个内部连接和一些“where 子句”参数)。
测试由每个系统的 10 个查询组成,每个查询之间的等待时间为 500 毫秒。每个查询的时间加上执行客户端库的控制台应用程序的开销是使用 System.Diagnostics.Stopwatch 测量的。与 SQL SB 查询 (529.1ms) 相比,表格模型查询的平均持续时间 (957.6ms) 是两倍。
我预计对表格模型的查询会更快,因为 Analysis Services 针对包含聚合和连接的此类分析查询进行了优化。
谁能解释为什么它没有表现得更好?或者为什么要使用表格模型而不是直接在关系数据库上运行 SQL 查询?