Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Memperbarui beberapa baris tabel tunggal

Jika setiap baris harus mendapatkan nilai berbeda yang tidak dapat diturunkan dari data yang ada di database, tidak banyak yang dapat Anda lakukan untuk mengoptimalkan kompleksitas keseluruhan. Jadi jangan berharap terlalu banyak keajaiban.

Karena itu, Anda harus mulai menggunakan pernyataan dan pengelompokan yang telah disiapkan:

public void updateRank(Map<Integer,Double> map){
    Iterator<Entry<Integer, Double>> it = map.entrySet().iterator();
    String query = "";
    int i = 0;

    Connection connection = getConnection(); // get the DB connection from somewhere
    PreparedStatement stmt = connection.prepareStatement("update profile set rank = ? where profileId = ?");

    while (it.hasNext()) {
        Map.Entry<Integer,Double> pairs = (Map.Entry<Integer,Double>)it.next();
        stmt.setInt(1, pairs.getValue());
        stmt.setDouble(2, pairs.getKey());
        stmt.addBatch(); // this will just collect the data values
        it.remove();
    }       
    stmt.executeBatch(); // this will actually execute the updates all in one
}

Fungsinya:

  1. pernyataan yang disiapkan menyebabkan pengurai SQL hanya mengurai SQL sekali
  2. pengelompokan meminimalkan perjalanan pulang pergi klien-server sehingga tidak satu untuk setiap pembaruan
  3. komunikasi antara klien dan server diminimalkan karena SQL hanya ditransmisikan sekali dan data dikumpulkan dan dikirim sebagai paket (atau setidaknya lebih sedikit paket)

Selain itu:

  • Harap periksa apakah kolom database profileId menggunakan indeks sehingga mencari baris masing-masing cukup cepat
  • Anda dapat memeriksa apakah koneksi Anda disetel ke komit otomatis. Jika demikian, coba nonaktifkan komit otomatis dan komit transaksi secara eksplisit setelah semua baris diperbarui. Dengan cara ini, operasi pembaruan tunggal juga bisa lebih cepat.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menghitung jumlah dua kolom dari dua tabel yang berbeda tanpa klausa where?

  2. Fungsi Matematika MySQL (Daftar Lengkap)

  3. MYSQL mengembalikan baris duplikat

  4. QueryException SQLSTATE[HY000] [1045] Akses ditolak untuk pengguna 'homestead'@'localhost' (menggunakan kata sandi:YA)

  5. Cara mencetak Datagridview memiliki tabel di VB