【发布时间】:2013-03-10 08:23:07
【问题描述】:
我有这种情况:我们在 SQL Server 数据库中的一个表已经有 5000 万行。我们不时分批插入行。每个批次的行具有相同的批次 ID 和日期时间戳,并且批次一次最多可以有 100k 行。
一天中有很多批次运行。使用batchID 和datetimestamp 获取第一批行的最佳查询方式是什么?
我们一直在使用批处理 id 的 min 并使用相应的 datetimestamp 有一段时间了,但它似乎没有有效地运行。您能否就可以做些什么来改善这一点提供一些见解?感谢您的回复。
【问题讨论】:
-
请提供表结构,包括索引和可能的几行示例数据。如果批次中的所有行都相同,我不明白为什么要将日期时间戳存储在该表中。而且我也不明白在这种情况下“第一批记录”是什么意思。
-
CREATE TABLE [Test]( [batch_id][int]NOT NULL, [Claim_ID][varchar](20) NOT NULL, [Transaction_ID][varchar](255) NULL, [Transaction_Type] [ varchar](5) NOT NULL, [paymentAmount] money, [EDate] [datetime] NULL) CONSTRAINT [pk_Test] PRIMARY KEY CLUSTERED ([batch_id] ASC, [Claim_ID] ASC, [Transaction_ID] ASC, [Transaction_Type] ASC) 这是是表结构,第一批记录表示一天内第一批10万条记录进入表。
-
如果每个批次的记录有相同的batchid和datetimestamp,并且每批次有100K条记录,应该为batchid和stamp创建一个表,然后FK到记录表。
-
@urlreader 我同意,但现在我无法进行此更改。只是寻找实现我想要的最佳方式。
-
请不要将代码示例或示例数据放入 cmets - 因为您无法对其进行格式化,所以阅读它非常困难....而是:更新您的问题,编辑它以提供附加信息!谢谢。
标签: sql sql-server sql-server-2008 sql-server-2008-r2