MySQL の遅いクエリの最適化方法と最適化の原則

MySQL の遅いクエリの最適化方法と最適化の原則

1. 日付のサイズを比較するには、XML に渡される日付形式は 'yyyy-MM-dd' に準拠している必要があります。そうすることで、インデックスを作成できます。たとえば、'yyyy' は 'yyyy-MM-dd' に変更され、'yyyy-MM' は 'yyyy-MM-dd' に変更されます [このようにして、MYSQL はそれを日付型に変換します]

2. 条件文では、等しい、より大きい、または小さいかどうかに関係なく、 WHEREの左側の条件クエリフィールドで関数、式、または数学演算を使用しないでください。

3. インデックス フィールドを最初に配置する、クエリ ヒット率の高いフィールドを最初に配置するなど、 WHERE条件ステートメント内のフィールドの順序を調整して、クエリ速度を向上させます。

4. SQL最適化の前後のクエリ結果が一貫していることを確認する

5. クエリを実行するときは、クエリ文の前にEXPLAINコマンドを記述して、文がインデックスされているかどうかをテストします [具体的な使用法 Baidu]

6. SELECT * FROM操作は使用しないでください。必要なフィールドのみが返される必要があります。不要なフィールドは返さないでください。

7. 複雑なクエリを分解し、SQL レベルではなくアプリケーション レベルでテーブル結合を実行するようにします。

8. WHERE句とORDER BY句に関係する列にインデックスを作成する

9. WHERE句のフィールドでNULL判定を行わないようにします [テーブル フィールドを変更し、文字列フィールドのデフォルト値を空字符串に、数値フィールドのデフォルト値を0に、日付フィールドのデフォルト値を1990-01-01などに設定することができます。]

10. WHERE句で!=または<>演算子の使用を避ける

11. WHERE句でOR演算子を使用しない

12. INの代わりにBETWEEN AND使用する

13. LIKE '%abc%' はインデックスを使用しませんが、 LIKE 'abc%' はインデックスを使用します

14. フィールドでの式演算を避ける

15. フィールドに対して関数操作を実行しない

16. GROUP BY操作は、デフォルトでGROUP BYの後にフィールドをソートします。プログラムでソートが不要な場合は、 GROUP BYステートメントの後にORDER BY NULLを追加してソートを削除できます。

17. 数値フィールドの場合は、数値フィールドとして設計するようにしてください。単に利便性や怠惰のためだけに、後で保守する同僚のためにハッチを埋めないでください。

18. テーブル内のすべてのフィールドはNOT NULLになるように設計されている

19. 返されるレコード数が固定されている場合は、 LIMITステートメントを使用して返されるレコード数を制限します。必要なレコードが 1 つだけの場合、または条件を満たすレコードが 1 つだけの場合は、 LIMIT 1

20. 列挙型フィールド(つまり、固定された列挙値を持つフィールド)の場合、性別、週、タイプ、カテゴリなど、 VARCHARではなくENUM使用することをお勧めします。

21. IP アドレスを格納するフィールドはUNSIGNED INT型になるように設計されています。

22. SQL でNOW()CURDATE()RAND()関数を使用しないでください [このメソッドを使用すると、MYSQL が SQL キャッシュを使用できなくなるため]。これをパラメータを渡すように変換できます。

23. 統計クエリ(連続する数か月間のデータの合計量をクエリしたり、前年比や前月比の変化をクエリしたりするなど)の場合、定期的にクエリを実行し、統計テーブルに統計を追加することで、クエリ速度を向上させることができます。

要約する

上記は、編集者が紹介したMysqlのスロークエリの最適化方法と最適化の原則です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • MySQL の低速クエリの最適化: 理論と実践からの制限の利点
  • MySQL スロークエリを通じて MySQL のパフォーマンスを最適化する方法
  • MySQL のスロークエリの最適化とスロークエリのログ分析の例のチュートリアル
  • MySQL の遅いクエリの最適化ソリューション

<<:  Vue3 のウォッチの使用方法とベストプラクティスガイド

>>:  Linux での screen コマンドの使用方法の詳細な説明

推薦する

アイデアをDockerに接続してワンクリックでデプロイする方法

1. docker設定ファイルを変更し、ポート2375を開きます。 [root@s162 docke...

Vue2.x における双方向バインディングの原理と実装

目次1. 実施プロセス2. オブザーバーを表示する3. ウォッチャーを実装する4. コンパイルを実装...

Linux の運用と保守で netstat の代わりに ss コマンドを使用する方法

序文Linux サーバーを操作および管理するときに、最もよく使用されるコマンドの 1 つが nets...

MySQLクエリステートメント内のユーザー変数のコード分析

前回の記事では、MySQL 最適化の概要 - クエリの合計数を紹介しました。この記事では、クエリ ス...

数千万データを持つMySQLテーブルを最適化する実践記録

序文まずここで説明させてください。インターネット上では、Alibaba では 500 万のデータを異...

nginx リクエスト ヘッダー データ読み取りプロセスの詳細な説明

前回の記事では、nginx がリクエスト ラインのデータを読み取って、リクエスト ラインを解析する方...

vue+django でファイルをダウンロードする例

目次1. 概要2. Django プロジェクト3. Vueプロジェクト1. 概要プロジェクトで、ダウ...

dockerにros2をインストールするための詳細な手順

目次メイントピック1. UbuntuにDockerをインストールする2. DockerにROS2-F...

VUEユニアプリ開発環境についての簡単な説明

目次1. HBuilderXビジュアルインターフェースを通じて2. vue-cliコマンドで実行する...

JavaScript で一意の ID を生成するいくつかの方法

考えられる解決策1. Math.randomは[0,1)の範囲の乱数を生成します。 //今回は生成さ...

CSSは、入力ボックスのフローティングテキスト効果を実現するために、placeholder-shown疑似クラスを使用します。

この記事では、:placeholder-shown 疑似クラスを使用して、純粋な CSS で浮動疑問...

画像とテキストでHTTPヘッダーのあらゆる側面を理解する

HTTPヘッダーとはHTTP は「Hypertext Transfer Protocol」の略です。...

Vue における ref と $refs の紹介と使用例

序文JavaScript では、document.querySelector("#demo...

MySQLは現在の日付と時刻を取得する関数の例の詳細な説明

現在の日付 + 時刻 (日付 + 時刻) を取得する関数: now() mysql> now(...

IIS 7.5はURL書き換えモジュールを使用してWebページのリダイレクトを実現します。

Apache では構成ファイルで Web ページまたは Web サイトの書き換えを簡単に設定できる...