Вставка SQL для данных ключ-значение-значение - PullRequest
1 голос
/ 11 сентября 2011

У меня есть данные, которые выглядят так:

x1 y1 z1 x2 y2 z2 val1 val2 val3 val4

Существует около 1000 (x, y, z) триплетов, но набор данных охватывает почти все-все-все комбинации, что дает мне почти 500 000 строк. Я пытаюсь вставить их в sqlite.

У меня есть таблица для точек, которая содержит x, y, z и таблица для результатов, которые содержат значения index1, index2,. Мой текущий подход к

select index from table POINTS where x1,y1,z1-> i1
select index from table POINTS where x2,y2,z2-> i2
insert i1,i2,val1, val2, val3, val4 into table VALS

Что дает мне 3 утверждения в строке и очень медленно. Могу ли я сделать это в одном утверждении? Я также хотел бы использовать readyStatement () при подключении к sqlite с помощью JDBC

Ответы [ 2 ]

2 голосов
/ 11 сентября 2011

Вы можете использовать подвыбор, конечно же

INSERT INTO vals (i1, i2, v1, v2, v3, v4) VALUES
((SELECT index FROM points WHERE x = ? AND y = ? and z = ?),
 (SELECT index FROM points WHERE x = ? AND y = ? and z = ?),
 ?, ?, ?, ?)
1 голос
/ 11 сентября 2011

Если вы сделаете эту вставку только один раз, это может быть микрооптимизацией.

Если это делается регулярно, вы можете использовать подготовленные операторы для каждой части запроса.

Обратите внимание, чтоНаиболее важным фактором для ускорения ваших избранных утверждений является используемые индексы.Добавление УНИКАЛЬНОГО ИНДЕКСА во все записи таблицы POINTS ускорит процесс.

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