Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Peramal. Mencegah penggabungan subkueri dan kondisi kueri utama

ROWNUM adalah cara teraman untuk mencegah transformasi pengoptimal dan memastikan keamanan tipe. Menggunakan ROWNUM membuat Oracle menganggap urutan baris itu penting, dan mencegah hal-hal seperti mendorong predikat dan melihat penggabungan.

select *
from
(
   select id, value, rownum --Add ROWNUM for type safety.
   from eav
   where attr like 'sal%' 
)
where to_number(value) > 5000;

Ada cara lain untuk melakukan ini tetapi tidak ada yang dapat diandalkan. Jangan repot-repot dengan tampilan sebaris sederhana, ekspresi tabel umum, CASE , urutan predikat, atau petunjuk. Metode umum tersebut tidak dapat diandalkan dan saya telah melihat semuanya gagal.

Solusi jangka panjang terbaik adalah mengubah tabel EAV agar memiliki kolom yang berbeda untuk setiap jenis, seperti yang saya jelaskan di jawaban ini . Perbaiki ini sekarang atau pengembang masa depan akan mengutuk nama Anda ketika mereka harus menulis kueri yang rumit untuk menghindari kesalahan ketik.



  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 Merujuk ke Kolom dengan ID atau Nomor Indeks

  2. Pertanyaan ReadyStatement di Jawa melawan Oracle

  3. berhitung dengan bergabung

  4. ORA-00907:kurung kanan hilang (Dengan Contoh)

  5. Fungsi JSON_OBJECT() di Oracle