パフォーマンスとディスク容量削減のための MySQL 選択クエリの最適化
実行に数分かかる遅い MySQL クエリは、直面する一般的なパフォーマンスの問題です開発者による。このシナリオでは、クエリは 3 つのテーブルからデータを取得して Web ページを表示します。 EXPLAIN コマンドを使用して調査したところ、クエリが中間結果をディスクに書き込んでいるため、重大なパフォーマンスのボトルネックが発生していることが判明しました。
クエリを最適化するために、次のような包括的なアプローチが採用されました。
テーブル構造分析
クエリでは、poster_data、poster_categories、poster_prodcat の 3 つのテーブルを使用しました。 Poster_data には個々のポスターに関する情報が含まれており、poster_categories にはすべてのカテゴリ (映画、アートなど) がリストされています。 Poster_prodcat は、ポスター ID と関連するカテゴリを保持しました。主なボトルネックは、poster_prodcat で特定されました。これには、1,700 万を超える行と、フィルタリングされている特定のカテゴリの多数の結果 (約 400,000) がありました。
インデックスの最適化
EXPLAIN 出力により、クエリに最適なインデックスが作成されておらず、非効率なデータ アクセスと実行速度の低下につながっていることが明らかになりました。主な問題は、フィルタリングに使用される poster_prodcat.apcatnum 列にインデックスが存在しないことでした。インデックスがないと、MySQL オプティマイザはフル テーブル スキャンに頼ったため、過剰なディスク I/O と長い実行時間が発生しました。
クエリ リライト
パフォーマンスに対処するためこの問題が解決されたため、クエリはより効率的なアプローチを使用して書き直されました:
- 3 つのテーブルは、代わりに INNER JOIN を使用して結合されました。効率の低い SELECT * の
- WHERE 句は、サブクエリの必要性を避け、目的のカテゴリで直接フィルタリングできるように簡素化されました。
- ORDER BY 句は、大規模なデータセットの不必要な並べ替えを防ぐためのクエリ。
一時テーブル作成
ディスク領域の使用量の問題を軽減するために、最適化されたクエリがさらに変更され、中間結果を格納する一時テーブルが作成されました。このアプローチにより、クエリがディスクへのデータの書き込みをバイパスできるようになり、パフォーマンスが大幅に向上しました。
追加の最適化
主な最適化とは別に、さらに強化するためにいくつかの追加の対策が実装されました。クエリのパフォーマンス:
- LIMIT 句を使用した結果の制限: 元のクエリには制限がありませんでした。 Web ページに必要のない多数の結果が返される可能性があります。
- 結果のキャッシュ: 一時テーブルは MEMORY エンジンを使用して作成され、高速アクセスのためにデータをメモリ内に保持します。
結論
インデックス作成、クエリ構造、一時テーブルの使用状況に対処することで、元のクエリが最適化され、パフォーマンスが向上し、ディスク領域の使用量が削減されました。この最適化により、実行時間が大幅に短縮され、Web ページ生成の応答性が大幅に向上しました。
以上が遅い MySQL SELECT クエリを最適化してパフォーマンスを向上させ、ディスク領域の使用量を削減するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、MySQLのAlter Tableステートメントを使用して、列の追加/ドロップ、テーブル/列の名前の変更、列データ型の変更など、テーブルを変更することについて説明します。

記事では、証明書の生成と検証を含むMySQL用のSSL/TLS暗号化の構成について説明します。主な問題は、セルフ署名証明書のセキュリティへの影響を使用することです。[文字カウント:159]

記事では、MySQLで大規模なデータセットを処理するための戦略について説明します。これには、パーティション化、シャード、インデックス作成、クエリ最適化などがあります。

記事では、MySQLワークベンチやPHPMyAdminなどの人気のあるMySQL GUIツールについて説明し、初心者と上級ユーザーの機能と適合性を比較します。[159文字]

この記事では、ドロップテーブルステートメントを使用してMySQLのドロップテーブルについて説明し、予防策とリスクを強調しています。これは、バックアップなしでアクションが不可逆的であることを強調し、回復方法と潜在的な生産環境の危険を詳述しています。

この記事では、クエリパフォーマンスを強化するために、PostgreSQL、MySQL、MongoDBなどのさまざまなデータベースでJSON列にインデックスの作成について説明します。特定のJSONパスのインデックス作成の構文と利点を説明し、サポートされているデータベースシステムをリストします。

記事では、外部キーを使用してデータベース内の関係を表すことで、ベストプラクティス、データの完全性、および避けるべき一般的な落とし穴に焦点を当てています。

記事では、準備されたステートメント、入力検証、および強力なパスワードポリシーを使用して、SQLインジェクションおよびブルートフォース攻撃に対するMySQLの保護について説明します。(159文字)


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 中国語版
中国語版、とても使いやすい

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ホットトピック









