在 MySQL 中產生大型數字序列:正確的方法
本文解決了在 MySQL 中建立大型連續數字表的挑戰。 先前的嘗試由於缺少分號和逗號而導致語法錯誤。 這是更正後的程式碼和使用生成器的更有效的替代方案。
直接插入的更正語法:
以下程式碼示範了建立表格和插入資料的正確語法,儘管它不是大型序列的最有效方法:
<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>
使用生成器的高效方法:
一種更有效率的方法利用 MySQL 視圖的強大功能來建立生成器。 這些生成器會產生數字序列,然後可以將其插入 numbers
表中。 這可以避免重複查詢最大現有數量。
以下是如何建構此類生成器的範例:
<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>
高效率的餐桌人口:
建立生成器後,您可以有效地填充numbers
表:
<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>
透過使用這種生成器方法,您可以避免迭代插入的效能瓶頸,並顯著加快在 MySQL 資料庫中建立大型數位序列的過程。 請記得調整使用的生成器視圖(本例為 generator_64k
)以符合您所需的序列大小。
以上是如何在MySQL中高效產生大型數字序列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!