【发布时间】:2021-12-02 19:31:18
【问题描述】:
我正在使用我的第一个 Azure sql db,并且在行和列中有一个非常大的表
有问题的表包含 2019 年至 2020 年的数据,大约有 2200 万行
待批加载 2021 将使其保持最新状态,大约有 3200 万条记录
这张表有 350 列(非常宽)
2021 年批量加载完成后的每日加载量约为每天 50,000 条记录
我想改进对该表的查询以减少加载到 PBI 导入的时间
一旦发生每日负载,行索引可能会立即过期。
- 如果我只是在视图中对这些数据进行子集化,以便 PBI 导入几列,那么 columnStore 索引是否可行?示例
描述在哪里('Foo' ,'酒吧' ) AND Date > Dateadd(Month, -12, '2021-01-01 00:00:00.000')
- 如果我添加列存储索引,我需要在 2021 年加载后刷新它
- 是否需要包含所有 350 列?我猜这会增加存储空间。
提前致谢
在处理频繁加载的宽大表时,更多关于索引类型的最佳实践
【问题讨论】:
-
您构建索引以匹配对性能至关重要的查询,而不是表布局。为了帮助您解决query-optimization 的问题,我们需要更多信息。请read this,然后edit您的问题。而且,如果您使用 SSMS(Microsoft 的 SQL Server Management Studio),则此提示适合您:在查询窗口中单击鼠标右键,然后选择 Show Actual Execution Plan,然后运行查询。执行计划显示有时会建议创建一个新索引。
-
感谢您的回复。我想我试图为您提供所有背景信息,说明为什么我在流程中追求最佳索引类型。即部分加载的大表(列和行),将看到每日交易。我不想要行索引附带的维护,但是有这么多列的大表会影响列索引执行和存储其数据的方式。正如我的示例中所见,查询并不复杂,我更关心为我的表应用正确类型的索引,例如行、列、集群或非集群,这是日常负载的一部分。
-
显然,向这种大小的表添加任何索引都需要时间。所以我只想第一次选对类型
标签: sql indexing datatables azure-sql-database query-optimization