ホームページ  >  記事  >  データベース  >  大量のデータを返すために MySQL クエリを最適化するにはどうすればよいですか?

大量のデータを返すために MySQL クエリを最適化するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-10 06:19:021011ブラウズ

How to Optimize MySQL Queries for Large Data Returns?

大量のデータを配信するクエリの最適な MySQL 設定

質問:

返される MySQL クエリを最適化するにはどうすればよいですか?多数のレコード (この場合は約 5,000 万件) が発生し、実行時間が長くなる

答え:

エンジンに合わせて MySQL を調整する

  • サーバー構成を確認し、それに応じて設定を調整します。
  • リソースについてよく理解する例:

    • http://www.mysqlperformanceblog.com/
    • http://forge.mysql.com/wiki/ServerVariables
  • ストアド プロシージャを使用してサーバー側でデータを処理し、大規模なデータセットをアプリケーションに転送する必要性を減らすことを検討してください。 layer.

InnoDB エンジンの使用を検討する

  • InnoDB は、インデックス検索と同じページに行データを格納することでパフォーマンスを向上させる可能性があるクラスター化インデックスを提供します。 .
  • アクセスを最適化するために、インデックス フィールドを含む複合主キーを作成します。 InnoDB では複合キーで AUTO_INCREMENT を使用できないことに注意してください。

分割統治

  • ストアド プロシージャを使用してデータをバッチで返します。キー フィールドの値の範囲を指定します (例: df_low とdf_high).
  • アプリケーション層では、マルチスレッドまたはループを使用して、管理可能なチャンクでデータを取得して処理します。

追加の最適化

上記の提案に加えて、さらなるパフォーマンスを得るために以下のリソースを調べてください。拡張機能:

  • http://www.jasny.net/?p=36
  • http://jpipes.com/presentations/perf_tuning_best_practices.pdf

InnoDB Stored を使用した具体的な例プロシージャ

次の例は、InnoDB ストアド プロシージャとマルチスレッド C# アプリケーションを使用してパフォーマンスを向上させる方法を示しています。

  1. データをフェッチするストアド プロシージャを作成するバッチで:

  2. を呼び出す C# アプリケーションを開発します。ストアド プロシージャを作成し、クエリ後の処理のために結果をコレクションに追加します。
  3. 複数のスレッドを使用して、データの異なるバッチを同時にフェッチします。

これらの手順に従うことで、コストを大幅に削減できます。 MySQL での大規模なデータ クエリの実行時間。

以上が大量のデータを返すために MySQL クエリを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。