在 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中文网其他相关文章!