ホームページ > データベース > mysql チュートリアル > MySQL で大きな数値シーケンスを効率的に生成するにはどうすればよいですか?

MySQL で大きな数値シーケンスを効率的に生成するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-11 16:41:43
オリジナル
759 人が閲覧しました

How to Efficiently Generate a Large Numeric Sequence in MySQL?

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート