2010-01-29 76 views
0

我有一個項目,我需要在sql 2005中創建兩個表並填充它們的數據(它們是天氣的查找表,名稱是男性的名字或女性的名字)我有7354個男性名字可以插入,7776個女性名字可以插入。插入很多行到SQL 2005

目前我做

CREATE TABLE #NamesMale (
[FirstName] [varchar](50) NOT NULL, 
    [MaxRank] [smallint] NULL) 

CREATE TABLE #NamesFemale (
[FirstName] [varchar](50) NOT NULL, 
    [MaxRank] [smallint] NULL) 

insert into #NamesMale select 'AADEN',343 
insert into #NamesMale select 'AAPELI',1000 
insert into #NamesMale select 'AAPO',1000 
... (snip ~7300 lines) 
insert into #NamesMale select 'ZVONIMIR',1000 
insert into #NamesMale select 'ZVONKO',1000 
insert into #NamesMale select 'ZYGMUNT',1000 

insert into #NamesFemale select 'AALIYAH',64 
insert into #NamesFemale select 'AAREN',1000 
insert into #NamesFemale select 'AARON',873 
... (snip ~7700 lines) 
insert into #NamesFemale select 'ZUZANA',1000 
insert into #NamesFemale select 'ZUZANNA',1000 
insert into #NamesFemale select 'ZVONIMIRA',1000 

目前,它需要一分鐘14秒加載在我的機器上的名字,並在那裏,這將在現場使用的服務器往往會遠遠超過我的開發不那麼強大機。

使用單獨的批量複製文件不是一個選項,解決方案必須完全transact-sql並在一個文件中。最好我想要一個不會破壞與sql2000的兼容性的解決方案,但這不是必需的。

任何幫助將不勝感激。

回答

0

我找到了我自己的問題的答案。同時試圖通過在10或11個GO命令中插入數據,將數據提供給運行此代碼的程序的進度條(它使用GOs通過/總GOs),現在它在幾秒鐘內完成。

我不知道爲什麼它固定的,但如果有人做我將不勝感激的意見的說明。

+0

沒有GO語句,整個批次被作爲一個事務執行;隨着GO語句被執行爲一系列較小的事務。 推測大型事務(鎖等)的開銷通過在較小的事務中執行而減少。 – 2010-02-01 13:05:05

2

我不知道select是否正在放慢你的速度。我會這樣做:

insert into NamesMale (FirstName,MaxRank) values ('AADEN',343) 
+0

我認爲改善運行時間從1:14到0:06是一個小改進。謝謝! – 2010-01-29 19:54:39

+0

說得太快,它跑錯了東西,它仍然採取1:11 – 2010-01-29 20:38:18