Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chèn hoặc cập nhật hàng loạt Slick 3.0 (nâng cấp)

Có một số cách mà bạn có thể làm cho mã này nhanh hơn (mỗi cách nên nhanh hơn những cái trước, nhưng nó dần dần ít thành ngữ hơn):

  • Chạy insertOrUpdateAll thay vì insertOrUpdate nếu trên slick-pg 0.16.1+

    await(run(TableQuery[FooTable].insertOrUpdateAll rows)).sum
    
  • Chạy tất cả các sự kiện DBIO của bạn cùng một lúc, thay vì đợi từng sự kiện cam kết trước khi bạn chạy sự kiện tiếp theo:

    val toBeInserted = rows.map { row => TableQuery[FooTable].insertOrUpdate(row) }
    val inOneGo = DBIO.sequence(toBeInserted)
    val dbioFuture = run(inOneGo)
    // Optionally, you can add a `.transactionally`
    // and / or `.withPinnedSession` here to pin all of these upserts
    // to the same transaction / connection
    // which *may* get you a little more speed:
    // val dbioFuture = run(inOneGo.transactionally)
    val rowsInserted = await(dbioFuture).sum
    
  • Thả xuống cấp JDBC và chạy upert tất cả trong một lần ( ý tưởng qua câu trả lời này ):

    val SQL = """INSERT INTO table (a,b,c) VALUES (?, ?, ?)
    ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);"""
    
    SimpleDBIO[List[Int]] { session =>
      val statement = session.connection.prepareStatement(SQL)
      rows.map { row =>
        statement.setInt(1, row.a)
        statement.setInt(2, row.b)
        statement.setInt(3, row.c)
        statement.addBatch()
      }
      statement.executeBatch()
    }
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết nối với MySQL từ Android bằng JDBC

  2. MySql sử dụng cú pháp đúng cho mệnh đề over

  3. Chuyển từ SQLite sang MySQL với Flask SQLAlchemy

  4. Cách cài đặt MySQL Workbench trên Ubuntu

  5. Tạo một đường hầm SSH để truy cập từ xa MySQL