Bagaimanakah saya boleh mendapatkan kembali pertanyaan MySQL SELECT yang besar dalam ketulan untuk mengoptimumkan prestasi dan mengelakkan ralat memori?

Patricia Arquette
Lepaskan: 2024-10-26 02:53:45
asal
284 orang telah melayarinya

How can I retrieve large MySQL SELECT queries in chunks to optimize performance and avoid memory errors?

Mendapatkan Kembali Pilihan MySQL Besar dalam Potongan

Apabila berhadapan dengan pertanyaan MySQL SELECT yang besar melebihi berjuta-juta baris, ia menjadi penting untuk mengoptimumkan prestasi untuk mengelakkan kesilapan ingatan. Satu pendekatan yang berkesan ialah mendapatkan semula data dalam ketulan, dan bukannya cuba mendapatkan semula keseluruhan set data sekali gus.

Untuk mencapai ini, anda boleh menggunakan ciri LIMIT. Dengan menentukan baris permulaan (offset) dan bilangan baris untuk diambil (had), anda boleh mendapatkan semula data dalam segmen yang boleh diurus. Sebagai contoh, pertanyaan berikut mengembalikan 1,000 baris pertama:

<code class="sql">SELECT * FROM MyTable ORDER BY whatever LIMIT 0,1000</code>
Salin selepas log masuk

Untuk mendapatkan semula potongan 1,000 baris berikutnya, laraskan offset dan had sewajarnya:

<code class="sql">SELECT * FROM MyTable ORDER BY whatever LIMIT 1000,1000 -- rows 1,001 - 2,000
SELECT * FROM MyTable ORDER BY whatever LIMIT 2000,1000 -- rows 2,001 - 3,000</code>
Salin selepas log masuk

Walau bagaimanapun, untuk memastikan ketekalan data anda, adalah disyorkan untuk membuat jadual sementara dan mengisinya dengan hasil pertanyaan asal. Ini membekukan data dalam masa dan menghalang perubahan semasa pemprosesan. Jadual sementara kemudiannya boleh disoal dalam beberapa bahagian:

<code class="sql">CREATE TEMPORARY TABLE MyChunkedResult AS (
  SELECT *
  FROM MyTable
  ORDER BY whatever
);

-- retrieve row chunks
SELECT * FROM MyChunkedResult LIMIT 0, 1000;
SELECT * FROM MyChunkedResult LIMIT 1000,1000;
SELECT * FROM MyChunkedResult LIMIT 2000,1000;</code>
Salin selepas log masuk

Akhir sekali, ingat untuk menjatuhkan jadual sementara apabila selesai untuk mengelakkan penggunaan storan yang tidak perlu:

<code class="sql">DROP TEMPORARY TABLE MyChunkedResult;</code>
Salin selepas log masuk

Dengan melaksanakan pendekatan ini, anda boleh memproses pilihan MySQL yang besar secara berkesan dalam ketulan, meningkatkan prestasi dan mengurangkan isu ingatan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mendapatkan kembali pertanyaan MySQL SELECT yang besar dalam ketulan untuk mengoptimumkan prestasi dan mengelakkan ralat memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!