Sql 加载不存在数据的最佳实践
我试图在MS SQL 2008中构建一个表,其中加载了大约50000行数据。现在我正在做一些类似的事情:Sql 加载不存在数据的最佳实践,sql,sql-server-2008,Sql,Sql Server 2008,我试图在MS SQL 2008中构建一个表,其中加载了大约50000行数据。现在我正在做一些类似的事情: Create Table MyCustomData ( ColumnKey Int Null, Column1 NVarChar(100) Null, Column2 NVarChar(100) Null Primary Key Clustered ( ColumnKey ASC ) WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = O
Create Table MyCustomData
(
ColumnKey Int Null,
Column1 NVarChar(100) Null,
Column2 NVarChar(100) Null
Primary Key Clustered
(
ColumnKey ASC
)
WITH (
PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON
)
)
CREATE INDEX IDX_COLUMN1 ON MyCustomData([COLUMN1])
CREATE INDEX IDX_COLUMN2 ON MyCustomData([COLUMN2])
DECLARE @MyCount Int
SET @MyCount = 0
WHILE @MyCount < 50000
BEGIN
INSERT INTO MyCustomData
(ColumnKey, Column1, Column2)
Select @MyCount + 1, 'Custom Data 1', 'Custom Data 2'
Set @MyCount = @MyCount + 1
END
我知道这是行不通的,但这是我唯一能展示的东西,似乎能为我的追求提供一个例子。如有任何建议,我们将不胜感激。
一些用于测试的样本数据集
另一种选择是使用您选择的语言在csv文件中创建数据,然后将其导入SQL Server,这将比您当前的方法快得多。好吧,如果我想要50000行常量数据和计数器,我会选择
select row_number() over(order by t1.[number]), 'Custom data 1', 'Custom data 2'
from
master..spt_values as t1
cross join (select [number] from master..spt_values where [type] = 'P' and [number] between 1 and 50) as t2
where
[type] = 'P' and t1.[number] between 1 and 1000
@Aizotu:您想让50000行具有相同的数据
('Custom data 1','Custom data 2')
?我想他想有一些“假数据”用于测试。@Tim:我也这么想,但脚本没有显示任何迹象。@ypercube:标题有一个符号:“不存在的数据”@Aizotu-你的速度慢的一部分可能是你正在插入3个索引…在插入完成之前不要添加非聚集索引。我非常喜欢这个!我需要确保在每个客户站点上,运行此T-SQL的应用程序都可以访问主数据库和spt_值表。谢谢
select row_number() over(order by t1.[number]), 'Custom data 1', 'Custom data 2'
from
master..spt_values as t1
cross join (select [number] from master..spt_values where [type] = 'P' and [number] between 1 and 50) as t2
where
[type] = 'P' and t1.[number] between 1 and 1000