2016-04-22 75 views
0

任何人都可以推薦一個更好的SQL語句或方法,以便我可以更快地鏈接到INSERT INTO?我目前的方法減慢,因爲表變大,我的鏈接表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......") 

    } 


    }