ホームページ  >  記事  >  バックエンド開発  >  MySQL データベース内の特定のテーブル接続クエリが非常に遅いのですが、どうすれば最適化できますか?

MySQL データベース内の特定のテーブル接続クエリが非常に遅いのですが、どうすれば最適化できますか?

WBOY
WBOYオリジナル
2016-08-04 09:21:181608ブラウズ

2 つのテーブル間の接続クエリは非常に遅いですが、1 つのテーブルのみをクエリすると非常に高速になるか、他のテーブルの接続クエリも非常に高速になります。

クエリステートメント (クエリ時間は約 0.5 秒):

リーリー

メンバーテーブル構造(約40,000データ):

リーリー

ギフトテーブル構造(約4000個のデータ):

リーリー

返信内容:

2 つのテーブル間の接続クエリは非常に遅いですが、1 つのテーブルのみをクエリすると非常に高速になるか、他のテーブルの接続クエリも非常に高速になります。

クエリステートメント (クエリ時間は約 0.5 秒):

リーリー

メンバーテーブル構造(約40,000データ):

リーリー

ギフトテーブル構造(約4000個のデータ):

リーリー

インデックスの最適化: g テーブルの Mid にインデックスを追加し、m のテーブルのステータスと wid にインデックスを追加します。インデックスが使用されているかどうかを確認するために、行数をできるだけ少なくするように努めます

  1. インデックス作成

    1. メンバーテーブルの(id,wid,wxid,wid_wxid)にインデックスを作成します

    2. ギフトテーブルのインデックス(id,wid,mid,auth_wid,wxid)

    3. 一部のフィールドが where 条件に頻繁に出現する場合は、インデックスも作成する必要があります。

  2. * 記号は使用しないでください: 必須フィールドのみを列挙してください

  3. SQL リファレンス: SQL は私が直接書いたものであり、テストされていません

リーリー

ギフトのmidフィールドの外部キーを作成し、メンバーテーブルのIDに関連付けます

データについてわからないことはありますか?
http://www.zhihu.com/question/37777220

実行計画を投稿してください

サブクエリを使用してインデックスを作成します。

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