SQL, как я могу создать много записей для ссылочной таблицы соединений? - PullRequest
0 голосов
/ 22 февраля 2012

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

CREATE TABLE IF NOT EXISTS util_nums (n integer primary key 
  autoincrement not null);

insert into util_nums values (0);

insert into util_nums(n) select null from (select 0 as n union select 1 
union select 2 union select 3 union select 4 union select 5 union select 6 
union select 7 union select 8 union select 9 union select 10) 
a cross join (select 0 as n union select 1 union select 2 union select 3 
union select 4 union select 5 union select 6 union select 7 union select 8 
union select 9 union select 10) b cross join (select 0 as n union select 1 
union select 2 union select 3 union select 4 union select 5 union select 6 
union select 7 union select 8 union select 9 union select 10) c;

Я использую sqlite

Ответы [ 2 ]

0 голосов
/ 22 февраля 2012

Я не уверен, что это намного быстрее, но вы можете попробовать

--assuming table is empty, insert 2 records
insert into util_nums values (null);
insert into util_nums values (null); 

insert into util_nums 
select null from     
util_nums,util_nums,util_nums,util_nums,util_nums,
util_nums,util_nums,util_nums,util_nums,util_nums,
util_nums,util_nums,util_nums,util_nums,util_nums,
util_nums,util_nums,util_nums,util_nums,util_nums

;Он вставляет 2 ^ 20 (если вам нужно больше, просто добавьте еще util_nums к from) + 2 записи довольно быстро.

0 голосов
/ 22 февраля 2012

Создайте файл со всеми вашими данными, а затем выполните массовую вставку в таблицу из файла.

См. Это

CREATE TABLE tmp_util_nums
(
 n int NOT NULL,

)
go

DECLARE @SQL varchar(max)
Declare @PathFileName varchar(max) 
SET @SQL = "BULK INSERT tmp_util_nums FROM '"+@PathFileName+"' WITH (FIELDTERMINATOR = ',') "

- Шаг 2: выполнить оператор BULK INSERT EXEC (@SQL)

- Шаг 3: ВСТАВИТЬ данныев финальную таблицу INSERT в util_nums SELECT * FROM tmp_util_nums

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