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

SQL:apakah kita memerlukan kata kunci APAPUN/BEBERAPA dan SEMUA?

Saya menemukan APAPUN dan SEMUA sangat berguna ketika Anda tidak hanya menguji kesetaraan atau ketidaksetaraan. Pertimbangkan

'blah' LIKE ANY (ARRAY['%lah', '%fah', '%dah']);

seperti yang digunakan jawaban saya untuk pertanyaan ini .

ANY , ALL dan penyangkalannya dapat sangat menyederhanakan kode yang jika tidak memerlukan subkueri atau CTE non-sepele, dan menurut saya mereka kurang digunakan secara signifikan.

Pertimbangkan bahwa ANY akan bekerja dengan operator apa pun. Ini sangat berguna dengan LIKE dan ~ , tetapi akan bekerja dengan tsquery, pengujian keanggotaan array, pengujian kunci hstore, dan banyak lagi.

'a => 1, e => 2'::hstore ? ANY (ARRAY['a', 'b', 'c', 'd'])

atau:

'a => 1, b => 2'::hstore ? ALL (ARRAY['a', 'b'])

Tanpa ANY atau ALL Anda mungkin harus mengekspresikannya sebagai subkueri atau CTE melalui VALUES daftar dengan agregat untuk menghasilkan satu hasil. Tentu, Anda dapat melakukannya jika Anda mau, tetapi saya akan tetap menggunakan ANY .

Ada satu peringatan nyata di sini:Pada versi Pg yang lebih lama, jika Anda menulis ANY( SELECT ... ) , Anda hampir pasti akan lebih baik dalam hal kinerja dengan EXISTS (SELECT 1 FROM ... WHERE ...) . Jika Anda menggunakan versi di mana pengoptimal akan mengubah ANY (...) untuk bergabung maka anda tidak perlu khawatir. Jika ragu, periksa EXPLAIN keluaran.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql - mengisi baris untuk bulan yang hilang

  2. Menghubungkan ke mySQL melalui C++

  3. apa yang akan menjadi kueri sql untuk memeriksa pasangan nilai kolom yang sama dalam sebuah tabel?

  4. SQL:bagaimana kueri dalam urutan sql dengan dibuat dalam kasus ini

  5. Mengapa float store saya di MYSQL sebagai 0,9999 padahal lebih besar dari 1?