每隔一段时间,人们就需要进行一次检查。这就是这样一个时刻。
我有用于报告的表格。它们每天删除/插入一次或每天多次,以始终使用连续的日期范围(例如本月至今或滚动 45 天)从源“刷新数据”。源数据没有 ID 或唯一性。
到目前为止,约定是在日期上使用聚集索引 - 每个表都有一个日期,每个查询都使用一个日期(99% 的时间)。如果表中有一个或多个使其唯一的列,我已将这些列添加到集群中以使其唯一(例如,状态和电子邮件)。如果没有,我添加了一个 ID IDENTITY 以使其唯一。
研究似乎建议“使用递增的 ID”,几乎没有偏差。然而,使用这个约定的性能非常出色——除非我在某个地方遗漏了一些东西。
因此,虽然这很好,但有时同行检查可能是一件好事:)
环境:Azure SQL
index sql-server clustered-index index-tuning azure-sql-database
我一定是在某个地方遗漏了一些东西..
Azure SQL
DispatchedOn is a DateTime column
ALTER TABLE [table] WITH CHECK ADD CONSTRAINT [CK_ReportDate6MonthRollGreater] CHECK ((CONVERT([date],[DispatchedOn])>='2022-12-07'))
GO
ALTER TABLE [table] CHECK CONSTRAINT [CK_ReportDate6MonthRollGreater]
GO
Run Code Online (Sandbox Code Playgroud)
我可以插入日期 2022-12-01