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

推薦する

Windows および Linux で tomcat9 を介して war パッケージを手動で展開する方法

Windows 環境と Linux 環境では結果が異なります。ウィンドウズステップ 1: Maven...

MySQL 永続統計の詳細な説明

1. 永続的な統計情報の重要性:統計は、MySQL が実行プランを生成するためのガイドとして使用され...

JavaScriptを使って動的にテーブルを生成するケースの詳しい説明

目次序文実装のアイデア実装コード成果を達成する序文これは、テーブルを動的に追加する例です。[追加] ...

Centos 7.4 サーバーの時刻同期設定方法 [NTP サービスに基づく]

この記事では、CentOS 7.4 サーバーで時刻同期を構成する方法について説明します。ご参考までに...

MySQLのレプリケーションとチューニングの原則と方法を分析する

1. はじめにMySQL にはレプリケーション ソリューションが付属しており、次のような利点がありま...

MySQLの共通関数を使用してJSONを処理する方法

公式ドキュメント: JSON 関数名前説明JSON_APPEND() JSONドキュメントにデータを...

vue+antv でレーダーチャートを実装するためのサンプルコード

1. 依存関係をダウンロードするnpm インストール @antv/データセットnpm インストール ...

Ubuntu システムにおけるネットワーク構成ファイルの分析と説明

今日は奇妙なネットワーク問題に遭遇しました。調査プロセスといくつかの構成状況を記録し、Linux で...

CSS と Bootstrap アイコンを使用して、上下にジャンプするインジケーター矢印のアニメーション効果を作成します。

ページが非常に長い場合は、下にさらにコンテンツがあることをユーザーに知らせるために矢印が必要になるこ...

Mysql はテーブル内の古いデータを定期的にクリアし、いくつかのデータを保持します (推奨)

以下の目標を達成するため: Mysql データベースは、一定の間隔 (2 時間または 1 日、カスタ...

Bootstrap 3.0 学習ノート グリッドシステム事例

序文前回の記事では、主にグリッドシステムの基本原理を学び、簡単なケースを通してその原理を実践しました...

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

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

デジタル時計効果を実現するJavaScript

この記事では、デジタル時計効果を実現するためのJavaScriptの具体的なコードを参考までに紹介し...

CSS の優先順位に関する詳細な紹介

CSS の優先順位について話す前に、CSS とは何か、CSS が何に使用されるのかを理解する必要があ...

Linuxはsttyを使用して端末の回線設定を表示および変更します。

Sttty は、Linux で端末設定を変更および印刷するための一般的なコマンドです。 1. パラ...