创建表sql server最佳性能或最佳实践

问题描述 投票:0回答:2

我只是想了解性能上的差异是什么,或者在 sql server 中创建表的最佳实践是什么。这适用于相当大的数据集。

SELECT <column names>
into <new_table_name>
from <table_name>

VS

CREATE TABLE <table_name> as
(
column_name1 datatype(),
column_name2 datatype()
)

INSERT INTO <table_name>(column_name1, column_name2)
SELECT <column_names> FROM <table_name>;

感谢您的任何见解。

sql sql-server create-table
2个回答
1
投票

标记为已回答,感谢院长。在我的情况下,更好的选择是使用显式创建表。这让我对一切有更多的控制权;数据类型、文件组、压缩、键、索引等


0
投票

虽然这是一篇旧帖子,但似乎没有太多内容。因此,最近处理了这个问题,并在 MS SQL 中建立了一个经过测试的答案后,我想我应该分享结果。

基本的答案是,如果你追求性能,这取决于MS SQL Server的黑盒。从字面上看,这意味着您只能通过计时来找出哪一个表现最好。我们发现,使用 INDEX 创建 TABLE 然后 INSERT INTO 有时比 SELECT INTO 然后创建 INDEX 更快,有时则不然。有时这种差异很小,有时却相当显着。我们本身无法找到直接的韵律或理由。此外,这也适用于 FullTables 和 #TempTables。尽管作为标准实践,我们从不使用 SELECT INTO 创建 FullTable,但我们只使用 #TempTables 来创建 FullTable,因为它们是一次性的,我们不需要在 GIT 存储库中跟踪它们。

至于最佳实践,这取决于 #TempTable 的风格和目的。如果您不打算在表上建立索引,那么请使用 SELECT INTO,否则您应该测试一下哪个索引可以为您提供最佳性能。因为你永远不知道什么时候这会成为一个问题。请记住,虽然 SELECT INTO 速度更快,但您必须考虑之后创建索引的成本,才能获得使用此方法的真实时间成本。

© www.soinside.com 2019 - 2024. All rights reserved.