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

Seberapa mahal JOIN dalam SQL? Dan/atau, apa trade off antara kinerja dan normalisasi?

Praktik terbaik adalah selalu mulai dengan 3NF, lalu pertimbangkan denormalisasi hanya jika Anda menemukan masalah kinerja tertentu.

Performa hanyalah satu masalah yang harus Anda tangani dengan database. Dengan menduplikasi data, Anda berisiko membiarkan data yang tidak konsisten berada di database Anda, sehingga meniadakan salah satu prinsip inti database relasional, konsistensi (C di ACID ) .

Ya, bergabung memiliki biaya, tidak ada jalan keluarnya. Namun, biayanya biasanya jauh lebih murah daripada yang Anda kira, dan sering kali dapat dibanjiri oleh faktor lain seperti waktu transmisi jaringan. Dengan memastikan kolom yang relevan diindeks dengan benar, Anda dapat menghindari banyak biaya tersebut.

Dan, ingat mantra pengoptimalan:ukur, jangan menebak! Dan ukur dalam lingkungan seperti produksi. Dan pertahankan pengukuran (dan penyetelan) secara berkala - pengoptimalan hanya satu set dan lupakan operasi jika skema dan data Anda tidak pernah berubah (sangat tidak mungkin).

Pengembalian kinerja biasanya dapat dibuat aman dengan menggunakan pemicu untuk menjaga konsistensi. Ini tentu saja akan memperlambat pembaruan Anda, tetapi mungkin tetap membuat pilihan Anda berjalan 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. Pilih * dari table1 yang tidak ada di table2 dengan kondisional

  2. Masukkan bidang ID yang dihasilkan dari pemicu, tetapi tidak diteruskan

  3. tidak dapat terhubung ke mysql dengan php

  4. Lewati dan Ambil tidak berfungsi dengan MySQL EntityFrameworkCore

  5. Kesalahan kolom tidak diketahui dalam pernyataan COUNT MySQL ini?