一张大桌子还是分成两张小桌子?

时间:2011-09-07 14:32:11

标签: sql sql-server sql-server-2008

将大约100列的大表分成2个单独的表是否有任何性能优势?这将是插入,删除和选择任务?我正在使用SQL Server 2008。

4 个答案:

答案 0 :(得分:1)

您可能会看到的唯一好处是,只是偶尔会填充多个列。在这种情况下,将这些放入他们自己的表中并且仅在有数据时添加一行可能在整体行开销方面有意义,并且取决于行数,表的总页数。也就是说,这是他们在SQL Server 2008中引入sparse columns的原因之一。

对于管理两个表而不是一个表的维护和其他开销(特别是考虑到人们可以选择单独的表),它不太可能值得。

您能描述哪些类型的实体需要超过100列?也许数据模型首先是错误的。

答案 1 :(得分:1)

如果其中一个字段是CLOB或BLOB ,您预计它会持有大量数据,您不会经常需要该字段 结果集将通过长管道传输(如服务器到基于Web的客户端),然后我认为将该字段放在单独的表中是合适的。

但是只返回100个常规字段可能不会对系统征税,以至于证明单独的表和连接是合理的。

答案 2 :(得分:0)

我会说不,因为每当你想做某事时,加入2个表需要更多的执行时间。

答案 3 :(得分:0)

如果您在应用程序中同时使用这些字段,我将取决于此。

这些性能改进非常糟糕:您无法理解源代码。如果您在使用此表时遇到性能问题,请添加一些内容(例如包含您将在通过触发器更新的请求中使用的15个字段的表),不要修改您的清洁解决方案。

如果您没有遇到性能问题,请不要做任何事情,稍后会看到!