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マスタースレーブデータベース構築方法の詳細な説明

この記事では、MySQL マスター/スレーブ データベースの構築方法について説明します。ご参考までに...

JavaScript オブジェクト (詳細)

目次JavaScript オブジェクト1. 定義2. オブジェクトの分類3. オブジェクトを定義する...

JavaScript でフォロー広告を実装するためのサンプルコード

フローティング広告は、ウェブサイト上で非常に一般的な広告形式です。フローティング広告は、ユーザーの閲...

MySQL複合クエリの詳細な説明

UNIONの使用ほとんどの SQL クエリは、1 つ以上のテーブルからデータを返す単一の SELEC...

MySQL でのデータベース間クエリの例

序文MySQL では、クロスデータベース クエリは主に 2 つの状況に分けられます。1 つは同じサー...

Angularフレームワークのビュー抽象定義の詳細な説明

序文「大規模なフロントエンド プロジェクト向け」に設計されたフロントエンド フレームワークである A...

ウェブデザインの初心者に役立つ学習教材をいくつかお勧めします

勉強中に読んだ本についてもよく聞かれます。以下は初心者におすすめの本です(私が勉強中に読んだ本です。...

Apache での ab パフォーマンス テスト結果を分析する

私はパフォーマンス テストを行うために常に Loadrunner を使用してきました。 Loadru...

CSS で 3 列レイアウトを実装するいくつかの方法と利点と欠点

序文3 列レイアウトは、その名前が示すように、両側が固定され、中央が適応します。実際の開発では、3 ...

mysql8.0.14.zip のインストール中にデータ フォルダを自動的に作成できませんでした。サービスを開始できません。

今日システムを再インストールした後、コンピューターに mysql を再インストールし、ZIP ファイ...

MySQL 5.0.96 for Windows x86 32 ビット グリーン簡易版インストール チュートリアル

MySQL 5.0 は、いくつかの「高度な機能」があるため定番となっています。これは、Windows...

Linux サーバーに SSH パスワードなしでログインする方法

テスト サーバーにログインするたびに、必ず ssh ログインのパスワードを入力する必要があります。ロ...

SSMは、mysqlデータベースアカウントのパスワード暗号文ログイン機能を実装します。

導入当社は、情報セキュリティと機密アプリケーションに関わるいくつかのプロジェクトの研究開発に従事して...

Uniapp は DingTalk スキャンコード ログイン サンプル コードを実装します

UniappにはDingTalk認証ログインがないため、この記事ではDingTalk QRコードログ...

vue+node+socket ioは複数人のインタラクションを実現し、プロセス全体を解放します

1. 背景1. フロントエンドはvue + vuex + socket.io-clientを使用しま...