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

MySQL secara efisien menyalin semua catatan dari satu tabel ke tabel lainnya

Hanya ada satu hal yang Anda lewatkan. Terutama, jika Anda menggunakan InnoDB, apakah Anda ingin secara eksplisit menambahkan klausa ORDER BY dalam pernyataan SELECT Anda untuk memastikan Anda memasukkan baris dalam urutan kunci utama (indeks berkerumun):

INSERT INTO product_backup SELECT * FROM product ORDER BY product_id

Pertimbangkan untuk menghapus indeks sekunder pada tabel cadangan jika tidak diperlukan. Ini juga akan menghemat beberapa beban di server.

Terakhir, jika Anda menggunakan InnoDB, kurangi jumlah kunci baris yang diperlukan dan kunci kedua tabel secara eksplisit:

LOCK TABLES product_backup WRITE;
LOCK TABLES product READ;
INSERT INTO product_backup SELECT * FROM product ORDER BY product_id;
UNLOCK TABLES;

Penguncian mungkin tidak akan membuat perbedaan besar, karena penguncian baris sangat cepat (meskipun tidak secepat penguncian meja), tetapi karena Anda meminta.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Kenaikan otomatis kolom sementara dalam pernyataan pilih

  2. Apakah saya benar-benar perlu melakukan mysql_close()

  3. ER_NOT_SUPPORTED_AUTH_MODE:Klien tidak mendukung protokol otentikasi yang diminta oleh server; pertimbangkan untuk memutakhirkan klien MySQL

  4. SQL SELECT Satu-ke-Banyak menjadi satu baris

  5. Periksa tumpang tindih rentang tanggal di MySQL