Baru-baru ini saya mengetahui bahwa MySQL memiliki offset
fitur. Saya sudah mencoba mencari dokumentasi tentang hasil offset, atau perbedaan antara offset dan varian batas, tetapi sepertinya saya tidak dapat menemukan apa yang saya cari.
Katakanlah saya memiliki 10.000 baris dalam sebuah tabel dan saya ingin 25 hasil, dari baris 1.000. Sejauh yang saya dapat sejauh ini, saya bisa melakukan keduanya untuk mendapatkan hasil yang sama:
SELECT id,name,description FROM tablename LIMIT 1000,25
SELECT id,name,description FROM tablename LIMIT 25 OFFSET 1000
Yang ingin saya ketahui adalah perbedaan di antara keduanya.
- Apakah ini benar-benar melakukan hal yang sama atau apakah pemahaman saya salah?
- Apakah satu lebih lambat / lebih cepat di tabel yang lebih besar
- Apakah hasil perubahan offset ketika saya melakukannya
WHERE column=1
(katakanlah kolom memiliki> 100 nilai yang berbeda) - Apakah hasil perubahan offset ketika saya lakukan
ORDER BY column ASC
(dengan asumsi memiliki nilai acak)
Jika ini adalah pertanyaan 'bodoh' dan seseorang mengetahui dokumentasi apa pun yang menerangi subjek, harap tambahkan dalam balasan.
Saya memiliki perasaan offset melompati baris X pertama yang ditemukan dalam database, mengabaikan penyortiran dan di mana.
Jawaban:
Dalam hal operasi
sama sekali tidak ada perbedaan dalam pernyataan
Komentar @ siride adalah intinya.
Dari Dokumentasi yang sama
PERTANYAAN AKTUAL ANDA
Karena kedua kueri itu sama, tidak ada perbedaan
Menggunakan
LIMIT
tidak mengubah set hasil apa pun. Mereka hanya menavigasi dalam set hasil.Kueri ini
akan berbeda dari
karena LIMIT sedang diterapkan pada tahap yang berbeda.
Kueri pertama tidak menghasilkan apa-apa jika tablename memiliki kurang dari 1000 baris
Permintaan kedua tidak menghasilkan apa-apa jika subquery memiliki kurang dari 1000 baris
KESIMPULAN
Anda harus memahat kueri untuk memastikan Anda mengurutkan data pada tahap yang tepat
sumber