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 証明書を構成する詳細なプロセス

推薦する

mysql ビュー関数の分析と使用例

この記事では、例を使用して MySQL ビューの機能と使用方法を説明します。ご参考までに、詳細は以下...

docker で golang イメージに基づいて ssh サービスを構築する方法

以下は、docker の golang イメージに基づいて ssh サービスを構築するためのコードで...

Vue3+TypeScriptはaxiosをカプセル化し、リクエスト呼び出しを実装します

まさか、2021年になってもTypeScriptについて聞いたことがない人がいるなんて?プロジェクト...

HTMLは実際にはいくつかの重要なタグを学ぶアプリケーションです

「これは革命になるだろう」という記事が出たあと。業界の皆様に認知され、もちろん内外からの評価もいただ...

Docker-compose を使用して GitLab をデプロイする方法

Docker-compose は GitLab をデプロイします1. Dockerをインストールする...

Linuxのseqコマンドを使用して数字のシーケンスを生成します(推奨)

Linux の seq コマンドは、数字のリストを非常に高速に生成でき、使いやすく柔軟性に優れてい...

JavaScript 開発における標準コミットメッセージの重要性の詳細な説明

目次標準コミットメッセージの重要性コミットするコミットリント依存関係をインストールする.commit...

React の国際化 react-intl の使用

React で国際化を実現するにはどうすればよいでしょうか? react-intlプラグインは、Re...

1 行または複数行のテキストがオーバーフローしたときに省略記号を表示する CSS を実装する方法

1. 単一行オーバーフロー1. 1 行がオーバーフローした場合、超過部分は表示されます...または、...

ウェブサイトのビジュアルデザインの重要なポイント

手工芸デザインからグラフィックデザイン、そしてウェブデザインまで、デザインの原則は同じままですが、私...

JavaScriptはスクロールバーの位置を取得し、ページをアンカーポイントまでスライドします。

序文この記事は、私が最近仕事で遭遇した問題を記録したものです。アプリネイティブとフロントエンドのh5...

Vue コンポーネント (Vuex を含む) 間の値の転送に関する簡単な説明

目次父から息子へ:息子から父へ: Vuex を使用せずにコンポーネント間で値を渡す方法は、親から子、...

Win10 MySQLでCSVをエクスポートする2つの方法

Win10 で csv をエクスポートする方法は 2 つあります。1 つ目はツールを使用することです...

HTML フォームタグチュートリアル (3): 入力タグ

HTML フォーム タグのチュートリアル。このセクションでは、主に Web ページで INPUT タ...

CSS継承方法

次の背景画像を持つ div があるとします。 次の反射効果を作成します。 方法はたくさんありますが、...