Ale*_*dre 0 performance database-design sql-server columnstore table
我正在 SQL Server 上开发一个数据库项目,我在考虑使用列存储索引是否是一个好主意。
该项目由一个表 (A) 组成,该表将包含大量行,一列具有许多重复值。每天,一包新行将添加到表中,每个包都有一个“DateId”。
之后,我需要更新一个不同的表 (B) 加入 A 并过滤 A 以获取“DateId”和其他列。
SQL 中的示例:
CREATE TABLE A (
[Id] [BIGINT] IDENTITY(1,1) NOT NULL,
[DateId] [INT] NOT NULL,
[B_Id] [BIGINT] NOT NULL,
-- other columns...
INDEX cci_A CLUSTERED COLUMNSTORE
)
CREATE TABLE B (
[Id] [BIGINT] IDENTITY(1,1) NOT NULL,
-- other columns...
INDEX cci_B CLUSTERED COLUMNSTORE
)
UPDATE B
SET ...
FROM A
INNER JOIN B ON A.B_Id = B.Id
WHERE A.DateId = @myDateId
Run Code Online (Sandbox Code Playgroud)
在这种情况下,列存储是一个不错的选择吗?
修改一行将导致旧行被标记为“已删除”(但它仍在列存储索引中)并将新行添加到增量存储(基于行的存储,当它达到约 100 万时将被压缩)行)。因此,您可以想象,随着时间的推移,许多更新会在某种程度上降低您的列存储索引。您当然可以进行索引维护,但是 B 上的列存储索引可能不是最佳选择...
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |