sql - SQL中包含大量数据的现有表的分区
问题描述
我有一个表,其中包含表中的 2 个 cr 记录。我正在尝试根据月份和年份进行分区。
我尝试创建此表的文件组,但在我的场景中,该表在预编码部分的许多地方都使用。有什么办法可以让我对这个表进行分区并在 BI 报告中使用它,这样预编程就不会产生影响。
对于版本: - 我有以下非常基本的查询,但需要 10 分钟才能运行。
这是执行计划 - https://www.brentozar.com/pastetheplan/?id=B1dy0ZQ6d
任何人都可以看到改进它的方法吗?让我知道一些示例数据/表结构是否有用。
E2E_TBL_LIQUIDITY_TRACKING_CFY_JUNE 有 899556 条记录 LQTFYOpeningStock 有 934878 条记录 E2E_TBL_CPL_SALES_MR_008 有 131491 条记录 E2E_TBL_MATERIAL_MASTER 有 4695 条记录 LocationNameView 有 477 条记录 E2e_Tbl_Customer_Master 有 20390 条记录 E2_Master 有 20390 条记录
以下是索引: -
CREATE NONCLUSTERED INDEX [Index1LQt] ON [dbo].[E2E_TBL_LIQUIDITY_TRACKING_CFY_JUNE]
(
[Territory_Code] ASC
)
INCLUDE ( [Customer_Code],
[Product_Code],[LOB_Code],[Distributor_Stock],[Dealers_Stock],[L3_Price],[L1_Price],[L2_Price])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [Index2LQt] ON [dbo].[LQTFYOpeningStock]
(
[Customer_Code] ASC,
[Product_Code] ASC,
[Territory_Code] ASC,
[LOB_Code] ASC
)
INCLUDE ( [StockValueL1],
[StockValueL2],
[StockValueL3]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [Index3LQt] ON [dbo].[LQTFYOpeningStock]
(
[Territory_Code] ASC
)
INCLUDE ( [Customer_Code],
[Product_Code],
[LOB_Code],
[StockValueL1],
[StockValueL2],
[StockValueL3]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
ALTER TABLE [dbo].[E2E_TBL_CPL_SALES_MR_008] ADD CONSTRAINT [PK_MR008] PRIMARY KEY CLUSTERED
(
[Territory_Code] ASC,
[Customer_Code] ASC,
[Product] ASC,
[SKU] ASC,
[LOB] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
解决方案
您可以在没有多个文件组的情况下进行分区。理想情况下(出于性能原因)每个分区应该位于不同驱动器上的不同文件组上。但是分区可以正常工作(如果分区很大,则通常会更慢_在单个文件组上。以后在文件组之间移动分区很容易。
推荐阅读
- excel - 我可以使用条件编译来添加缺失的类型吗?
- swift - 将图像从 firebase 加载到 uitableviewcell
- python - 为什么当我发出 get 请求时,此 API 会打印日志作为输出?
- bash - Bash脚本,找不到文件
- python - 无法在python中获取url
- python - 最大两列数据框python pandas
- excel - 动态合并多个打印区域以在 Excel 宏中保存为 pdf
- angular - Angular Stopping and Clearing an interval
- python - 如何从数据框制作字典?
- python-3.x - Leetcode 无法理解一行代码 250 解决方案