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

Tidak termasuk catatan di mana subquery mengembalikan hasil yang harus saling eksklusif

Dan itu jelek. Ini berfungsi dengan baik sampai ada beban signifikan lainnya pada DB, dan kemudian semuanya berjalan sangat lambat. Ini sebagian besar karena keterbatasan IO server, tetapi pendekatan yang lebih sederhana adalah memasukkan isfiction dan isNonFiction ke dalam tabel MEMORY dan pernyataan DELETE kemudian dapat terlihat seperti:

    DELETE tmp_table FROM tmp_table
         INNER JOIN
         (
            SELECT ASIN, MAX( isFiction ) AS isFiction, MAX( isNonFiction ) AS isNonFiction
            FROM tmp_table
            GROUP BY ASIN
            HAVING isFiction =1
            AND isNonFiction =1
         ) D
         WHERE D.ASIN=tmp_table.ASIN AND tmp_table.isNonFiction=1

Dalam pengujian, ini menurunkan seluruh proses dari sekitar 90 detik menjadi 10 detik.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membuat fungsi MySQL khusus?

  2. Spring boot JPA insert di TABLE dengan nama huruf besar dengan Hibernate

  3. Apakah ada yang setara dengan SHA1() di MS-SQL?

  4. Karakter UTF8 tidak ditampilkan dengan benar dengan tabel data dan yadcf

  5. Menjalankan migrasi dengan Rails dalam wadah Docker dengan beberapa instance wadah