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 中国語 Web サイトの他の関連記事を参照してください。