sql insert的性能取决于表中的行数

时间:2014-03-21 13:11:09

标签: sql sql-server

我想将系统用户的一些信息记录到特殊的统计表中。 这个表中会有很多插入,但没有读取(不是用户,只有我会阅读)

我是否会获得更好的性能,有两个表,我将行移动到一个表,我可以用来查询,只是为了保持"插入"表尽可能小?

E.g。我的用户行为导致每天20000次插入,表格会快速增长,而且随着插入越来越多的行,我担心插入越来越慢。

2 个答案:

答案 0 :(得分:0)

如果SQL Server必须更新索引,插入会变慢。如果您的索引意味着重组不是必需的,那么即使对于大量数据,插入也不会特别慢。

我不认为你应该按照你建议的方式过早地进行优化,除非你完全确定它是必要的。很可能你只是采取一种简单的方法,然后可能添加一个定期更新的统计表,用于查询,如果你不介意有点过时......或类似的东西。

答案 1 :(得分:0)

插入的性能取决于表上是否有索引。你说用户不会从桌子上读书。如果您自己只需要很少查询它,那么您可以完全放弃索引,在这种情况下,插入性能不会发生变化。

如果您确实需要表格上的索引,那么您的表现将开始受到影响。在这种情况下,您应该考虑对表进行分区并执行最少日志记录的插入。这是通过将新记录插入到与主表具有相同结构但没有索引的新表中完成的。然后,一旦插入数据,将其添加到主表只不过是元数据操作;您只需将该表重新定义为主表的新分区。

Here's a good writeup on table partitioning