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

Apakah menggunakan pilih * untuk kursor di PL/SQL dianggap sebagai pemrograman yang buruk?

Menggunakan select * dalam kode Anda adalah apa yang saya sebut pemrograman malas, dengan beberapa efek samping yang buruk. Seberapa banyak Anda mengalami efek samping itu, akan berbeda, tetapi tidak pernah positif.

Saya akan menggunakan beberapa poin yang telah disebutkan dalam jawaban lain, tetapi jangan ragu untuk mengedit jawaban saya dan menambahkan beberapa poin negatif tentang penggunaan select * .

  1. Anda mengirimkan lebih banyak data dari mesin SQL ke kode Anda daripada yang diperlukan, yang berdampak negatif pada kinerja.

  2. Informasi yang Anda dapatkan kembali harus ditempatkan dalam variabel (misalnya variabel record). Ini akan membutuhkan lebih banyak memori PGA daripada yang diperlukan.

  3. Dengan menggunakan select * Anda tidak akan pernah menggunakan indeks sendirian untuk mengambil informasi yang diinginkan, Anda juga harus selalu mengunjungi tabel (asalkan tidak ada indeks yang menampung semua kolom tabel). Sekali lagi, dengan efek negatif pada kinerja.

  4. Kurang jelas bagi orang yang mempertahankan kode Anda apa niat Anda. Mereka perlu mempelajari kode untuk menemukan semua kemunculan variabel record Anda untuk mengetahui apa yang sedang diambil.

  5. Anda tidak akan menggunakan fungsi SQL untuk melakukan perhitungan, tetapi selalu mengandalkan perhitungan PL/SQL atau Java. Anda mungkin melewatkan beberapa peningkatan SQL hebat seperti fungsi analitik, klausa model, pemfaktoran subquery rekursif, dan sejenisnya.

  6. Dari Oracle11 dan seterusnya, dependensi sedang dilacak pada tingkat kolom, artinya ketika Anda menggunakan select * , kode Anda ditandai dalam kamus data sebagai "bergantung pada semua kolom" dari tabel itu. Prosedur Anda akan dibatalkan ketika sesuatu terjadi pada salah satu kolom tersebut. Jadi menggunakan pilih * berarti kode Anda akan lebih sering dibatalkan daripada yang diperlukan.

Sekali lagi, jangan ragu untuk menambahkan poin Anda sendiri.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kapan atau Mengapa menggunakan SET DEFINE OFF di Oracle Database

  2. Pilih dari tampilan gabungan dengan penggabungan tidak berfungsi?

  3. meneruskan array ke prosedur Oracle

  4. Bagaimana cara kerja GROUP BY?

  5. ORA-00900:kesalahan pernyataan SQL tidak valid? Apa yang salah dengan sql saya?