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

推薦する

MySQL 8.0.17 をインストールしてリモート アクセスを構成する方法

1. インストール前の準備データベースのバージョンを確認するコマンド: mysql --versio...

Linuxでkv設定ファイルを変更するにはsedコマンドを使用します

sed は Unix の文字ストリーム エディタ、つまりストリーム エディタです。行指向であり、行単...

vue3 を使用してマテリアル ライブラリを構築する方法

目次なぜマテリアルライブラリが必要なのでしょうか?材質は何ですか?素材の種類fuep、vue3 ベー...

HTML の長いテキストは、タグの幅を超えると自動的に切り捨てられます。

長いテキストを表示する場合、C# 側で文字をインターセプトする必要があることがよくありますが、長いテ...

Docker クロスホストネットワーク (オーバーレイ) の実装

1. Dockerのホスト間通信Docker クロスホスト ネットワーク ソリューションには以下が含...

insert と select を組み合わせて、「データベース内のフィールドの最大値 + 1 を挿入する」メソッドを実装する

この記事はmysqlデータベースです質問 1 表 1 のデータを表 2 にインポートします。表 1 ...

Vue-CLI3.xはプロジェクトをサーバーに自動的にデプロイします

目次序文1. scp2をインストールする2. テスト/本番環境サーバーのSSHリモートログインアカウ...

SqlクエリMySqlデータベーステーブル名と説明テーブルフィールド(列)情報

以下では、SQL クエリ ステートメントを使用して、Mysql データベース内のテーブルのテーブル名...

Nginx 静的ファイル サービスの構成と最適化の詳細な説明

ルートディレクトリとインデックスファイルroot ディレクティブは、ファイルの検索に使用するルート ...

ウェブフォームデザインのための5つの実用的なヒント

1. フォームテキスト入力のモバイル選択: テキスト入力フィールドにプロンプ​​トが追加されている場...

MySQL 8.0.21.0 コミュニティ エディションのインストール チュートリアル (詳細な図解)

1. MySQLをダウンロードするMySQL 公式 Web サイトにログインし、MSI インストー...

CSS プロパティ display:flow-root 宣言を 1 つの記事でマスターする

zhangxinxu より https://www.zhangxinxu.com/wordpress...

Windows で mysql-8.0.18-winx64 をインストールするチュートリアル (画像とテキスト付き)

1. インストールパッケージをダウンロードするインストール パッケージは次の場所にあります:参考:...

フレックスレイアウトのスペース間の最後の行の左揃えの問題を解決する方法

まずはコードと効果を見てみましょう↓ <スタイル> 。主要 { アウトライン: 1px ...

階層化されたピラミッドを実現するための HTML+CSS の例

この記事では主に、HTML+CSS で階層化ピラミッドを実装する例を紹介し、皆さんと共有します。詳細...