Лучшая практика для загрузки несуществующих данных - PullRequest
1 голос
/ 23 июня 2011

Я пытаюсь построить таблицу в MS SQL 2008, загруженную примерно 50 000 строк данных.Сейчас я делаю что-то вроде:

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

Моя проблема в том, что это безумно медленно.В какой-то момент я подумал, что мог бы создать оператор Select для создания своих пользовательских данных и использовать его в качестве источника данных для моего оператора Insert Into.

, то есть что-то вроде

INSERT INTO MyCustomData
 (ColumnKey, Column1, Column2)
From (Select Top 50000 Row_Count(), 'Custom Data 1', 'Custom Data 2')

Я знаю, что это не такне работает, но это единственное, что я могу показать, что, кажется, дает пример того, что я после.Любые предложения будут очень ценны.

Ответы [ 2 ]

1 голос
/ 23 июня 2011

Ну, если бы я хотел 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
1 голос
/ 23 июня 2011

http://www.mysqlperformanceblog.com/2011/02/01/sample-datasets-for-benchmarking-and-testing/

некоторые образцы наборов данных для тестирования.

Другой вариант - создать данные в файле csv на выбранном вами языке и затем импортировать их в SQL Serverбудет намного быстрее, чем ваш текущий метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...