MySQL インデックスのパフォーマンス最適化の問題に対する解決策

MySQL インデックスのパフォーマンス最適化の問題に対する解決策

MySQL によって作成される最適化はインデックスを追加することですが、インデックスを追加しても目的の効果が得られない状況が発生することがあります。

追加した後も、すべてのデータに対して検索が失敗します。理由はSQLです。

説明選択
      cs.sid、
      -- c.courseFrontTitle、
      -- c.imgBig、
      cs.studyStatus、
      手数料、
      -- act.PROC_INST_ID_ AS プロセスID、
      cs.createDTM、
      cs.payStatus、
      cs.isCompleted、
      cs.saleChannel、
cs.isDelete
    から
      ビジネスコーススタディcs

    Biz_CourseOrderItem coi を cs.sid = coi.CourseStudyID に左結合します 
    
    どこ
      cs.studentID = 00001 かつ cs.payStatus が in(0) ではない

インデックスを見ると、sid が bigint で CourseStudyID の型が varchar であることが原因です。理由はここにあります。型を bigint に変更すると、クエリ速度が一気に向上します。

私もこのような状況に遭遇しました。エクストラを分析した結果、0.6s 単位で順序付けしなくても速度は問題ないことがわかったので、6s 単位で順序付けを追加しました。

解決策は、order by のインデックスを作成することです。ここでの order by は 2 つのフィールドです。

order by endTime desc ,isDelete desc

ab、index_a_bの結合インデックスを作成します。

SELECT xxx FROM manage a FORCE INDEX(index_a_b)
LEFT JOIN f_name f ON f.user_id = a.user_id
ORDER BY a.endTime desc、a.isDelete desc

この時点でパフォーマンスを見ると、filesortの使用は消えている

速度は0.6秒になります

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL パフォーマンス最適化インデックス プッシュダウン
  • MySQL パフォーマンスの最適化: インデックスを効率的かつ正しく使用する方法
  • MySQL パフォーマンス最適化の事例 - インデックス共有のカバー
  • MySQL パフォーマンス最適化のケーススタディ - インデックスと SQL_NO_CACHE をカバー
  • MySQL パフォーマンス最適化インデックス最適化
  • MySQL インデックスの使用戦略と最適化 (高パフォーマンス インデックス戦略)
  • MySQLはパフォーマンスを最適化するためにインデックスを使用します

<<:  vue3 を使用してカウント関数コンポーネントのカプセル化例を実装する

>>:  Nginx で HTTPS 証明書を構成する詳細なプロセス

推薦する

SSL で Nginx リバース プロキシを構成する簡単な手順

序文リバース プロキシは、Web 経由で行われたリクエスト (http と https の両方) を...

最もよく使用されるJavaScriptイベントについて詳しく学ぶ

目次JavaScript イベント:よく使用されるイベント:イベントアクション要約するJavaScr...

Zabbix を使用して ogg プロセスを監視する (Windows プラットフォーム)

この記事では、Windows プラットフォームで ogg プログラムを監視する方法を紹介します。 (...

nginx ロケーション優先度の詳細な説明

場所表現タイプ~ は大文字と小文字を区別して通常の一致を実行することを示します~*は大文字と小文字を...

この記事ではMySQLのNULLについて説明します。

目次序文MySQL の NULL 2 NULL占有長3 NULL値の比較4SQLはNULL値を処理す...

dockercompose を使用して springboot-mysql-nginx アプリケーションをビルドする

前回の記事では、Docker を使用して、コンパイルされた jar パッケージをイメージに組み込む ...

MySQL が起動直後にシャットダウンする問題 (ibdata1 ファイルの破損が原因) に対する完璧な解決策

コンピュータ ルームのサーバー上の mysql がしばらく実行されていたのですが、突然、再起動しても...

Linux周辺ファイルシステムのカスタマイズ方法

序文一般的に、Linux システムについて話すときは、Linux カーネルと GNU プロジェクトに...

MySQL では SQL ステートメントはどのように実行されますか?

目次1. MySQLアーキテクチャの分析1.1 コネクタ1.2 クエリキャッシュ1.3 アナライザー...

Yahooのフロントエンド最適化に関する35のルールについての簡単な説明

概要: 仕事でも面接でも、Web フロントエンドのパフォーマンスを最適化することは非常に重要です。で...

Web Storage APIの使用に関する簡単な説明

目次1. ブラウザのローカルストレージ技術1.1、セッションストレージ1.2、ローカルストレージ2....

ファイルのダウンロードを実現する javascript Blob オブジェクト

目次例示する1. ブロブオブジェクト2. フロントエンド3. バックエンド要約する例示する最近、ファ...

Vue2.0/3.0 での provide と inject の使用例

目次1. provide/inject の用途は何ですか? 2. provide/injectの使い...

JavaScript クラス配列の詳細な理解

js 配列はどこでも使用されているため、おそらく誰もがよく知っているでしょうが、配列クラス (疑似配...

HTMLの表のtbodyは上下左右にスライドできます

テーブル ヘッダーが固定されている場合は、それを 2 つのテーブルに分割する必要があります。1 つの...