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

推薦する

Linux CentOS6.5 yum インストール mysql5.6

この記事では、Linux yumを使用してmysql5.6をインストールする簡単な手順を参考までに紹...

Redis を Docker コンテナとして素早くデプロイする方法

目次はじめるデータストレージサーバーを構成するRedis セキュリティの管理Redisインストールの...

初心者向けBootstrap 3.0学習ノート

この学習ノートの最初の記事として、シリーズの他の記事と同様に、Bootstrap の紹介から始め、そ...

MySQLクエリ時にフィールドにデフォルト値を割り当てる方法

必要フィールドをクエリする場合、フィールドに同じ値を指定する必要があります。この値はハードコードする...

Vue.$set の失敗の落とし穴の発見と解決

偶然、プロジェクト内でVue.$setが無効であることがわかりましたデータ フィルタリングを追加する...

Linux でユーザーをグループに追加する 4 つの方法の概要

序文Linux グループは、Linux でユーザー アカウントを管理するために使用される組織単位です...

MySQL 8.0.15 で MGR シングル マスターと複数スレーブを構成する方法

1. はじめにMySQL グループ レプリケーション (略して MGR) は文字通り MySQL グ...

Vue プラグイン エラー: このページで Vue.js が検出されました。問題は解決しました

Vue プラグインがエラーを報告しました: このページで Vue.js が検出されましたVueプラグ...

HTML Webページ作成チュートリアル iframeタグを慎重に使用してください

iframe を使用すると、他の Web サイトのページを簡単に呼び出すことができますが、注意して使...

Docker に Elasticsearch 7.6.2 をインストールするチュートリアル

DockerをインストールするDocker をインストールする必要がありますが、それ以上の指示はあり...

vue v-for ループ オブジェクトの属性

目次1. ループオブジェクト内の値2. ループオブジェクト3. キーと値のループ1. ループオブジェ...

HTML文書におけるol要素の数値制限に関する議論

一般的に言えば、HTML ドキュメント内で極端に大きな <ol> リストに遭遇する可能性...

CSS3 の display:grid、グリッドレイアウトの紹介

1. グリッドレイアウト(グリッド): Web ページをグリッドに分割し、さまざまなグリッドを組み合...

CentOS7 は rpm パッケージを使用して mysql 5.7.18 をインストールします

例示するこの記事は、2017 年 5 月 20 日に MySQL-5.7.18 を使用して作成されま...