【发布时间】:2023-01-26 22:22:08
【问题描述】:
我有一个 Azure SQL 表,它只加载一次(没有更新/插入/删除),此后它将用于报告。报表在此表上写入了多个 sql 查询,并且查询运行了很长时间。我正在尝试使用索引但遇到以下问题。
该表有两组列(col1、col2、col3 和 col7、col8、col9),这些列用于 where 子句,报表查询中的分组依据以不同的组合。
例如: 选择 col1,col7,count(*) 从表 按 col1,col7 分组
选择 col1,col8,count(*) 从表 按 col1,col8 分组
等等。查询将始终有两列用于分组依据或过滤器。如果我尝试在单个列上应用索引(col1 上的索引、col2 上的索引等),则该索引不会用于查询。只有当我为查询中使用的特定组合应用索引时(例如 col1、col4 上的复合索引),才会使用该索引。
该表有大约 10 列(两组 5 列),可以组合使用,我不想为每个可能的组合创建复合索引,因为表很大。
这种情况下正确的索引解决方案是什么?
【问题讨论】:
标签: sql sql-server indexing azure-sql-database