2016-04-22 2 views
0

Может ли кто-нибудь рекомендовать лучший SQL-запрос или подход, чтобы я мог INSERT INTO таблицу ссылок быстрее? Мой текущий подход замедляется по мере увеличения таблиц, и моя проблема связана с таблицей INSERT.Как оптимизировать INSERT в таблице ссылок

У меня есть две таблицы, соединенные таблицей ссылок. Схема ниже:

CREATE TABLE table1 
(id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY, 
field1 VARCHAR(40)) 

CREATE TABLE table2 
(id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY, 
field1 VARCHAR(100), 
field2 INT, 
field3 VARCHAR(40)) 

CREATE TABLE linkTable 
(id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY, 
field1 INT REFERENCES table1(id), 
field2 INT REFERENCES table2(id)) 

Потому что я пытаюсь пакетных вставок, я в настоящее время проверки, что я не добавлять повторяющиеся значения в таблице ссылок с этим длинным запросом:

INSERT INTO linktable(field1,field2) 
SELECT table1Id, table2Id FROM 
(SELECT table1.id table1Id, table2.id table2Id FROM table1,table2 
WHERE table1.name=? AND table2.name=?) tmp 
WHERE NOT EXISTS 
(SELECT linktable.field1 FROM linktable tmp1 WHERE 
tmp1.field1=tmp.table1id AND tmp1.field2=tmp.table2id) 

ответ

0

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

ResultSet = Statement.executeQuery ("Select count  (column_name) From table_name Where column_name = 'whatever'; 

While (rs.next()){ 
Int count = rs.getInt (count (column_name); 

If (count == 0){ 
     Statement2.executeUpdate ("INSERT INTO......") 

    } 


    }