我有一个项目,我需要在sql 2005中构建两个表并用数据填充它们(它们是天气的查找表,名称是男性的名字或女性的名字)我有7354个男性名字要插入和7776个女性名字要插入。
目前我这样做
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
现在需要一分钟十四秒才能在我的机器上加载名称,并且在现场使用这些名称,服务器通常比我的开发机器功能强大得多。
使用单独的批量复制文件不是一个选项,解决方案必须完全是transact-sql并且在一个文件中。我希望解决方案不会破坏与sql2000的兼容性,但这不是必需的。
非常感谢任何帮助。
答案 0 :(得分:2)
我不知道select
是否会让你失望。我会这样做:
insert into NamesMale (FirstName,MaxRank) values ('AADEN',343)
答案 1 :(得分:0)
我找到了自己问题的答案。尝试将数据提供给运行此代码的程序的进度条(它使用GO传递/总GO),通过在插入中加入10或11个GO命令,它现在在几秒钟内完成。
我不知道为什么会修复它,但如果有人这样做,我会很感激评论中的解释。