创建表SQL Server最佳性能或最佳实践



我只是在询问性能的差异或在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>;

感谢您的任何见解。

在回答的情况下标记,这要归功于Dean。在我的情况下,更好的选择是使用明确的创建表。这使我对一切都有更多的控制权;数据类型,文件组,压缩,键,索引等。

全部,尽管这是一个旧文章,但似乎并没有太多。因此,最近处理了此问题,并在MS SQL中建立了经过测试的答案,我认为我会分享结果。

基本答案是,如果您要进行性能,则取决于MS SQL Server的Blackbox。这意味着从字面上看,您只能通过将哪个来确定哪一个可以通过计时来表现出最好的表现。我们发现,用索引创建表,然后插入有时比选择更快,然后创建索引,有时不是。有时这种差异很小,有时相当重要。我们本身无法找到直接的押韵或理由。此外,这适用于完整的物品以及#temptables。尽管作为标准实践,我们永远不会使用Select创建完整的选择,我们只能使用#temptrables进行投掷,因为它们是抛弃的,我们不需要跟踪我们的git存储库中的那些。

至于最佳实践,这取决于样式和#tempt的目的。如果您不打算在桌子上拍索引,请与Select一起使用,否则应该测试以查看哪个为您提供最佳性能。您永远不知道什么时候会成为一个问题。请记住,当选择进度更快时,您必须考虑创建索引(ES)之后才能获得使用此方法的真实时间成本。

获得真实的时间成本。

最新更新