【问题标题】:How to optimise INSERT into link table如何优化 INSERT 到链接表
【发布时间】:2016-04-22 15:32:34
【问题描述】:

谁能推荐一个更好的 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)

【问题讨论】:

    标签: java sql database derby


    【解决方案1】:

    如果您使用 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......")
    
      } 
    
    
       }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-23
      • 2017-10-10
      • 2021-07-18
      • 2012-04-16
      • 1970-01-01
      • 2020-06-03
      • 1970-01-01
      相关资源
      最近更新 更多