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

Pesan berdasarkan nilai maksimal dalam tiga kolom berbeda

Itu mungkin dapat dilakukan dalam kueri pemilihan (mungkin menggunakan sesuatu seperti case when meskipun saya tidak yakin itu diperbolehkan dalam order by klausa itu sendiri, YMMV tergantung pada DBMS) tetapi jarang merupakan ide yang baik untuk menggunakan perhitungan per-baris jika Anda ingin database Anda berskala dengan baik karena tabel menjadi lebih besar ("tidak memiliki kinerja babi berkaki satu dalam pacuan kuda" , seperti yang dikatakan dengan fasih oleh salah satu DBA kami).

Dalam situasi seperti ini, saya menyiapkan kolom (diindeks) tambahan untuk menampung maksimum dan memastikan bahwa integritas data dipertahankan dengan menggunakan pemicu penyisipan/pembaruan untuk memaksa kolom baru itu ke maksimum tiga lainnya.

Karena sebagian besar tabel database dibaca jauh lebih sering daripada ditulis, ini mengamortisasi biaya perhitungan di semua pembacaan. Biaya ditanggung hanya ketika data diperbarui dan kueri menjadi sangat cepat karena Anda memesan pada satu kolom yang diindeks:

select f1, f2, f3 from t order by fmax desc;


  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 saya bisa melakukan FULL OUTER JOIN di MySQL?

  2. Masukkan nilai persia ke dalam tabel dengan kode php

  3. Php $_GET metode

  4. MySQL PILIH kolom unik di mana kolom lain maksimal

  5. Database PhalconPHP Bergabung di ORM