Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 在sql2005中插入一百万行需要多长时间?_Sql Server 2005_Tsql - Fatal编程技术网

Sql server 2005 在sql2005中插入一百万行需要多长时间?

Sql server 2005 在sql2005中插入一百万行需要多长时间?,sql-server-2005,tsql,Sql Server 2005,Tsql,我想知道理论时间。我知道每台服务器都会有所不同 我正在将1000000个99字节的行从SQL2K数据库拉入同一服务器实例上的SQL2005数据库 源表上有索引。执行计划显示 目标表上没有索引 查询大约需要1分钟。这看起来真的很长……考虑到这是一个简单的插入 插入EDW.STAGE.DESTINATION 选择AccountNumber、CardNumber、FiscalYear、SeqNumber、Category、DateSaved、FullLandValue、FullBuildingValu

我想知道理论时间。我知道每台服务器都会有所不同

我正在将1000000个99字节的行从SQL2K数据库拉入同一服务器实例上的SQL2005数据库

源表上有索引。执行计划显示

目标表上没有索引

查询大约需要1分钟。这看起来真的很长……考虑到这是一个简单的插入

插入EDW.STAGE.DESTINATION
选择AccountNumber、CardNumber、FiscalYear、SeqNumber、Category、DateSaved、FullLandValue、FullBuildingValue、TotalValue、ValueException、TaxableTotal、DataPreAssessGeneralId、getdate()、2010,来源为FiscalYear=2010

我打赌有一种方法可以加快速度…但是如何呢? 更新
这实际上是一个动态SQL语句。为了简洁起见,我只显示生成的字符串。我将该语句作为动态vs t-SQL进行测试,执行时间相同。

这完全取决于服务器中的硬件, 磁盘、cpu和ram速度都很重要


组件越快,查询越快。

这完全取决于服务器中的硬件, 磁盘、cpu和ram速度都很重要


组件越快,查询就越快。

这可能需要时间,具体取决于很多事情(索引、使用表的索引视图、外键、硬件等)

您可以尝试使用批量插入,这是针对这类事情而优化的,但是您必须为文件加载数据,但这非常简单,您甚至可以从图形客户端执行


这可能需要时间,这取决于很多事情(索引、使用表的索引视图、外键、硬件等)

您可以尝试使用批量插入,这是针对这类事情而优化的,但是您必须为文件加载数据,但这非常简单,您甚至可以从图形客户端执行


您提到的是目标表上的索引,而不是源表上的索引。如果源表在FiscalYear列上没有非聚集索引,请添加一个。这将加快内部查询的速度(选择
按钮)

此外,还可以在索引中包含正在选择的其他列,以消除执行计划中的键查找。(如果
SELECT
语句中的列表示表中的所有列,那么在FiscalYear列上使用聚集索引可能会更好,但这可能会干扰现有主键(如果有主键的话)

或者,您也可以随时增强机箱上的硬件,但这对于优化
INSERT
语句来说可能有些过分

编辑:


您还可以使用来移动数据。您可以保存SSIS包,然后从应用程序调用它或在SQL Server上调度它。

您提到的是目标表上的索引,而不是源表上的索引。如果源表在FiscalYear列上没有非聚集索引,请添加一个。这将加快内部查询的速度(选择
按钮)

此外,还可以在索引中包含正在选择的其他列,以消除执行计划中的键查找。(如果
SELECT
语句中的列表示表中的所有列,那么在FiscalYear列上使用聚集索引可能会更好,但这可能会干扰现有主键(如果有主键的话)

或者,您也可以随时增强机箱上的硬件,但这对于优化
INSERT
语句来说可能有些过分

编辑:


您还可以使用来移动数据。您可以保存SSIS包,然后从应用程序调用它,或者在SQL Server上调度它。

在源表的FiscalYear上是否有聚集索引? 还是非聚集覆盖指数

单选需要多长时间

目标表上有触发器吗

假设正在使用链接服务器,则使用什么安全性


或者是同一实例上的数据库对数据库?如果是,在源数据库添加到实例后,是否更新了源数据库的统计数据源表上的FiscalYear上是否有聚集索引? 还是非聚集覆盖指数

单选需要多长时间

目标表上有触发器吗

假设正在使用链接服务器,则使用什么安全性


或者是同一实例上的数据库对数据库?如果是这样,那么在源数据库添加到实例后,是否更新了该数据库的统计信息?请尝试使用批量插入

尝试使用批量插入

该语句是动态SQL。不确定这是一个选项这里有一个用于批量插入的api,所以它肯定是一个选项。即使没有,也可以为批量插入动态生成命令行参数。该语句是动态SQL。不确定这是一个选项这里有一个用于批量插入的api,所以它肯定是一个选项。即使没有,您也可以为批量插入动态生成命令行参数。我必须测试您的所有问题。Thanks这是一个非聚集索引,涵盖财政年度、类别和日期。select语句为18秒。不是链接的服务器。相同的服务器实例。我不确定最新的统计数据。我必须测试你所有的问题。Thanks这是一个非聚集索引,涵盖财政年度、类别和日期。select语句为18秒。不是链接的服务器。相同的服务器实例。我不确定更新的统计数据,我在IPhone上看到了,但我想你的数据是反向的。我的源代码有索引。目标没有索引。我的理解是,目标上的索引实际上会减慢插入速度。因为在每一行插入过程中修改了索引。@道格·张伯伦-你说的没错,但我错了