我想问一下如何处理1张单表中庞大的1亿个数据。
该表将执行INSERT,SELECT& UPDATE。
我有一些建议要将表索引并将表存档到几个表中。
任何其他有助于调整SQL性能的建议。
案例: SQL Server 2008。 大多数时候关于十进制值的更新,以及微小int的状态。
INSERT语句不会使用BULK INSERT,因为我假设每分钟都有很多用户让10000-500000执行INSERT语句并更新表。
答案 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');