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

Ambil TOP 10 Baris Tanpa Menggunakan TOP atau LIMIT? – Pertanyaan Wawancara Minggu Ini #247

Pertanyaan: Ambil 10 Baris TOP Tanpa Menggunakan TOP atau LIMIT?

Jawaban: Ketika saya ditanya pertanyaan ini dalam Pemeriksaan Kesehatan Kinerja Basis Data Komprehensif baru-baru ini , saya bertanya kembali kepada orang tersebut mengapa dia ingin menemukan kembali roda. Namun, ketika saya menerima jawabannya, saya sebenarnya sekarang sangat setuju dengan alasannya.

Berikut alasannya:  Kami tidak ingin menggunakan TOP atau LIMIT karena sebenarnya bukan implementasi ANSI. Kami ingin mengambil baris teratas sedemikian rupa sehingga dapat bekerja di database yang berbeda seperti SQL Server, MySQL, MariaDB serta PostgreSQL.

Semua database telah menerapkan logikanya sendiri untuk mengambil baris teratas. SQL Server menggunakan TOP kata kunci sedangkan MySQL, MariaDB, dan PostgreSQL menggunakan LIMIT kata kunci untuk membatasi baris di SQL Server. Ini menghadirkan tantangan unik bagi vendor pihak ketiga yang sedang menulis kode yang dapat dicolokkan ke RDBMS mana pun. Mereka harus menulis kondisi penyihir kode dan memelihara dua versi logika yang berbeda. Namun, jika Anda menggunakan metode berikut ini akan bekerja di semua versi terbaru dari database relasional.

PILIH ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_DEFINITIONFROM (SELECT ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_DEFINITION,ROW_NUMBER() OVER (ORDER BY ROUTINE_NAME) SEBAGAI ROWNUMFROM INFORMATION_SCHEMA.ROUTINE_WHERE_PROUTINE_PER'PEUM PROCED> ROUTINE> 

Ini akan bekerja dengan semua database relasional yang pernah saya temui. Meskipun kami suka menggunakan TOP dan LIMIT, kami sering disarankan untuk terus menggunakan logika yang bekerja di beberapa basis data relasional.

Berikut adalah entri blog lain yang mungkin menarik bagi Anda:

  • SQL SERVER – Mematikan Opsi Konfigurasi Server Peningkatan Prioritas pada SSMS 18 dan seterusnya
  • SQL SERVER – Contoh Script untuk Memeriksa Fragmentasi Indeks dengan RowCount
  •  SQL Puzzle – Skema dan Pembuatan Tabel – Jawaban Tanpa Menjalankan Kode
  • Bagaimana Mengetahui Jika Indeks Dipaksa pada Kueri? – Pertanyaan Wawancara Minggu Ini #246

  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 cara MySQL memproses ORDER BY dan LIMIT dalam kueri?

  2. Perbarui nilai kolom, ganti bagian dari string

  3. Cara Mengimpor Database Menggunakan Baris Perintah

  4. Tidak semua parameter digunakan dalam pernyataan SQL (Python, MySQL)

  5. Menyimpan nilai hash SHA1 di MySQL