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 コマンドの使用方法の詳細な説明

推薦する

Baidu の https 認証プロンプト「http サイトを 301 から https サイトにリダイレクトしてください」の解決方法の詳細な説明

最近、ウェブサイトを https アクセスに変換したいのですが、すべて完了した後、Baidu Web...

Nginx プロキシを使用してインターネットを閲覧する方法

私は通常、Tomcatや他のアプリケーションのリバースプロキシとしてnginxを使用しています。実際...

Dockerは複数のポートマッピングコマンドを有効にします

次のように: docker run -d -p 5000:23 -p 5001:22 --name ...

CSSは高さを設定せずにdivを完全に中央に配置することを実現します

必要とする本文の下のdivは垂直方向に中央揃えになっていますdiv 内のテキストを垂直中央に配置する...

MyCat を使用して Linux で MySQL マスター/スレーブの読み取り/書き込み分離を実装する方法

目次Linux - MyCat を使用して MySQL マスター スレーブの読み取り書き込み分離を実...

Windows で Nginx を使用して https サーバーとリバース プロキシを構成する際の問題

リクエストロジックフロントエンド --> https経由でnginxをリクエストnginx -...

Docker を使用した SQL Server の実行の実装

現在、.net Core はクロスプラットフォームであり、誰もが Linux と Docker を使...

Linux Centos8 CA証明書作成チュートリアル

必要なファイルをインストールする Yum インストール openssl-* -yデータベースインデッ...

JavaScript でタブバーの切り替え効果を実装する

フロントエンド開発者が必ず知っておくべきケースとして、タブバーの切り替え効果があります。タブバー自体...

Docker ベースの Selenium 分散環境の構築

1.画像をダウンロードするdocker pull selenium/hub docker pull ...

CentOS SVN サーバーで複数のプロジェクトを管理する方法

一つの要求一般的に、企業には複数のプロジェクトがあります。SVN サーバーを設定した後は、プロジェク...

MySQLテーブルのテーブル構造を素早く変更する方法

MySQL テーブルのテーブル構造をすばやく変更する - 「MySQL 管理」から抜粋 ALTER ...

shtml includeの使い方

これを応用することで、ウェブサイトの一部の公開領域を独立したページにすることができ、その後、この技術...

SQLはLeetCodeを実装します(180.連続した数字)

[LeetCode] 180. 連続した数字少なくとも 3 回連続して出現するすべての数字を検索す...

MySQLデータ復旧のさまざまな方法の概要

目次1. はじめに2. 直接回復2.1 mysqldumpバックアップの完全リカバリ2.2 xtra...