在1个表中处理大量记录数据

时间:2011-09-20 12:19:04

标签: sql-server database tsql structure

我想问一下如何处理1张单表中庞大的1亿个数据。
该表将执行INSERT,SELECT& UPDATE。

我有一些建议要将表索引并将表存档到几个表中。

任何其他有助于调整SQL性能的建议。

案例: SQL Server 2008。 大多数时候关于十进制值的更新,以及微小int的状态。

INSERT语句不会使用BULK INSERT,因为我假设每分钟都有很多用户让10000-500000执行INSERT语句并更新表。

2 个答案:

答案 0 :(得分:1)

你应该考虑你有哪种列。

您在不同索引中包含的nvarchar/text / etc列越多,索引就越慢。

您还要使用哪种RDBMS?您有基于SQL Server,Oracle和MySQL的不同选项...

但重要的是建立你要使用的正确索引......

另一件事,您可以在SQL Server上使用BULK INSERT来加速插入。

但是问一下,我已经处理了数据库,每天有70个数据行填充;)

编辑-----更多信息发布后

我会尝试对案例采取其他一些方法,并将其与数据抓取进行比较。

毫无疑问,INSERT比UPDATE更快。并且您可能想要创建一个充当“收集”表的表。我的意思是它只会一直插入。没有更新,所有都是插入处理。

然后使用触发器/事件/调度程序来处理该表中的内容,并将您需要的内容填充到另一个表中。

通过这种方式,您可以将一些业务逻辑应用于“清理”(更新),并在数据库服务器上保持性能,而不是在这些事情完成后保持连接。

这当然也与“最终”数据的用途有关...

\ t

答案 1 :(得分:0)

显然,SQL 2008能够提供1亿条记录,但很多详细信息只能在10万条中发挥作用。选一个好的主键。填充因子。其他索引(将减慢插入但速度选择)。并发(锁定)。如果您可以接受脏读,那么这将有助于提高性能。这个问题需要更多细节。您需要发布表设计以及选择,更新和插入TSQL语句。我没有对你的问题进行投票,但如果你没有提供更多细节,它将被投票否决。

对于insert,请注意,如果BULK INSERT不是一个选项,则可以一次插入多行,并且比多个insert语句快得多。

    INSERT INTO Production.UnitMeasure
    VALUES (N'FT2', N'Square Feet ', '20080923'), (N'Y', N'Yards', '20080923'), (N'Y3', N'Cubic Yards', '20080923');