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

Bagaimana cara memeriksa secara real-time jika baris baru ditambahkan ke tabel MySQL

Jika meja Anda adalah MyISAM, saya akan tetap berpegang pada ide awal Anda. Mendapatkan jumlah baris dari tabel MyISAM adalah instan. Hanya membutuhkan pembacaan satu nilai tunggal karena MyISAM mempertahankan jumlah baris setiap saat.

Dengan InnoDB, pendekatan ini masih dapat diterima. Dengan asumsi car_table.id adalah kunci utama, SELECT COUNT(id) FROM car_table hanya membutuhkan pemindaian indeks, yang sangat cepat. Anda dapat meningkatkan ide ini dengan menambahkan kolom boolean terindeks lainnya ke tabel Anda:

ALTER car_table ADD COLUMN checked BOOLEAN NOT NULL DEFAULT 0, ADD INDEX (checked);

Nilai default memastikan mobil baru akan dimasukkan dengan bendera ini disetel ke 0 tanpa mengubah pernyataan penyisipan. Kemudian:

BEGIN TRANSACTION; -- make sure nobody interferes
SELECT COUNT(checked) FROM car_table WHERE checked = FALSE FOR UPDATE; -- this gets you the number of new, unchecked cars
UPDATE car_table SET checked = TRUE WHERE checked = FALSE; -- mark these cars as checked
COMMIT;

Dengan cara ini, Anda hanya memindai sejumlah kecil entri indeks di setiap pemungutan suara.

Pendekatan yang lebih maju terdiri dari menambahkan ID mobil yang baru dibuat ke dalam tabel samping, melalui pemicu. Meja samping ini sesekali dipindai, tanpa mengunci meja utama, dan tanpa mengubah strukturnya. Cukup TRUNCATE meja samping ini setelah setiap pemungutan suara.

Terakhir, ada opsi untuk memicu UDF, seperti yang disarankan oleh Panagiotis, tetapi ini tampaknya berlebihan di sebagian besar situasi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara lebih cepat untuk menghapus baris yang cocok?

  2. Cara memformat angka dengan . sebagai pemisah seribu, dan , sebagai pemisah desimal?

  3. Mengikat bukan nol di PDO?

  4. Cara memberi nomor ulang kolom dalam doktrin

  5. Perubahan pengkodean karakter MySQL. Apakah integritas data dipertahankan?