Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menjana Jujukan Numerik Besar dalam MySQL dengan Cekap?

Bagaimana untuk Menjana Jujukan Numerik Besar dalam MySQL dengan Cekap?

Patricia Arquette
Patricia Arquetteasal
2025-01-11 16:41:43759semak imbas

How to Efficiently Generate a Large Numeric Sequence in MySQL?

Menjana Jujukan Angka Besar dalam MySQL: Pendekatan yang Dibetulkan

Artikel ini menangani cabaran mencipta jadual besar nombor berturut-turut dalam MySQL. Percubaan sebelumnya mengakibatkan ralat sintaks kerana tiada koma bertitik dan koma. Berikut ialah kod yang diperbetulkan dan alternatif yang lebih cekap menggunakan penjana.

Sintaks Dibetulkan untuk Sisipan Terus:

Kod berikut menunjukkan sintaks yang betul untuk mencipta jadual dan memasukkan data, walaupun ia bukan kaedah yang paling berkesan untuk jujukan yang besar:

<code class="language-sql">CREATE TABLE numbers (
  number INT NOT NULL,
  CONSTRAINT XPKnumbers PRIMARY KEY CLUSTERED (number)
);

INSERT INTO numbers (number) VALUES (0);

-- The following section contains a syntax error in the original post and is not valid MySQL.  A procedural approach is needed for iterative insertion.
-- A stored procedure or a loop within a script would be more appropriate for large datasets.</code>

Pendekatan Cekap dengan Penjana:

Kaedah yang jauh lebih cekap memanfaatkan kuasa paparan MySQL untuk mencipta penjana. Penjana ini menghasilkan urutan nombor yang kemudiannya boleh dimasukkan ke dalam jadual numbers. Ini mengelakkan pertanyaan berulang untuk nombor maksimum sedia ada.

Berikut ialah contoh cara membina penjana sedemikian:

<code class="language-sql">CREATE OR REPLACE VIEW generator_16 AS
  SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL
  SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL
  SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL
  SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL
  SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL
  SELECT 15;

CREATE OR REPLACE VIEW generator_256 AS
  SELECT ((hi.n << 4) | lo.n) AS n
  FROM generator_16 lo, generator_16 hi;

-- Create additional generator views (generator_4096, generator_64k, etc.) as needed, building upon previous ones.</code>

Populasi Jadual Cekap:

Setelah penjana dicipta, anda boleh mengisi jadual numbers dengan cekap:

<code class="language-sql">INSERT INTO numbers (number)
SELECT n FROM generator_64k; -- Replace generator_64k with the appropriate generator view for your desired range.</code>

Dengan menggunakan pendekatan penjana ini, anda mengelakkan kesesakan prestasi sisipan berulang dan mempercepatkan proses mencipta jujukan angka yang besar dalam pangkalan data MySQL anda. Ingat untuk melaraskan paparan penjana yang digunakan (generator_64k dalam contoh ini) agar sepadan dengan saiz jujukan yang anda perlukan.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Jujukan Numerik Besar dalam MySQL dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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