アプリケーションが牛のように遅い理由は数多くあります。ネットワーク、システム アーキテクチャ、またはデータベースが原因の可能性があります。 では、データベース SQL ステートメントの実行速度を向上させるにはどうすればよいでしょうか?パフォーマンス チューニングはデータベース管理者 (DBA) の仕事だと考える人もいますが、パフォーマンス チューニングはプログラマーにも大きく関係しています。 プログラムに埋め込まれた SQL ステートメントの最適化のヒントをいくつか使用すると、半分の労力で 2 倍の結果を達成できます。 ヒント1:比較演算子を使用するときは「<>」ではなく「=」を使用する 「=」を使用すると、インデックスが使用される可能性が高くなります。 ヒント 2 : クエリ結果が 1 つしかないことが分かっている場合は、「LIMIT 1」を使用します。 「LIMIT 1」は完全なテーブルスキャンを回避でき、対応する結果が見つかるとスキャンは続行されません。 ヒント3 : 列に適切なデータ型を選択する TINYINT を使用できる場合は、SMALLINT を使用しないでください。SMALLINT を使用できる場合は、INT を使用しないでください。理由はご存じでしょう。ディスクとメモリの消費が少ないほど良いからです。 1.1 Java のように MySQL でブール型データを定義するにはどうすればよいでしょうか?実際、MySQL はブールデータ型を直接定義していません。tinyint(1) としてのみ定義できます。ブール値が 1 の場合は true を表し、ブール値が 2 の場合は false を表します。 1.2 Long データ型は MySQL データベースの bigint データ型に対応します。 ヒント4 : 大きなDELETE、UPDATE、INSERTクエリを複数の小さなクエリに分割する 数十行または数百行の SQL ステートメントを記述できるというのは、非常に印象的だと思いませんか?ただし、パフォーマンスを向上させ、データをより適切に制御するために、クエリを複数の小さなクエリに分割することができます。 ヒント5:結果セットが重複を許可する場合は、UNIONではなくUNION ALLを使用する UNION ALL は重複を削除しないため、UNION よりも効率的です。 ヒント6 : 同じ結果セットを複数回取得するには、SQL文の一貫性を保つ この目的は、クエリ バッファを最大限に活用することです。 たとえば、地域と製品 ID に基づいて製品価格を照会する場合、最初の使用法は次のようになります。 同じクエリを 2 回目に実行するときは、上記のステートメントの一貫性を保ってください。たとえば、where ステートメントの id と region の順序を入れ替えないでください。 ヒント 7 : 「SELECT *」の使用を避ける テーブル内のすべての列をクエリしない場合は、SELECT * の使用を避けてください。これは、テーブル全体のスキャンが実行され、インデックスを効果的に使用できないため、データベース サーバーの負荷と、データベース サーバーとアプリケーション クライアント間のネットワーク IO オーバーヘッドが増加するためです。 ヒント8: WHERE句ではできるだけインデックスを使用する すべての列ではなく、ただ「ベストを尽くす」だけです。インデックスが多すぎるとパフォーマンスが低下する可能性があるため、ローカルの状況に適応し、実際の状況に基づいて調整する必要があります。 ヒント9: JOIN句ではできるだけインデックスを使用する 繰り返しますが、これはすべての列ではなく、単に「最善を尽くす」だけです。 ヒント10: ORDER BY列は可能な限りインデックス化すべきである ORDER BY 列にインデックスを付けるとパフォーマンスも向上します。 ヒント11:ページングロジックを実装するにはLIMITを使用する パフォーマンスが向上するだけでなく、データベースとアプリケーション間の不要なネットワーク転送も削減されます。 ヒント12: EXPLAINキーワードを使用して実行プランを表示する EXPLAIN はインデックスの使用状況とスキャンされた行を調べることができます。 他の SQL をチューニングする方法は多数あり、同じクエリ結果をさまざまな方法でクエリできます。実際、最も現実的なデータセットとハードウェア環境を備えた開発環境でテストし、それを本番環境にリリースするのが最善の方法です。 上記は、編集者が紹介したMySql Select *の詳細な統合です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
>>: Linux スレッド間の同期と排他制御の知識ポイントのまとめ
1. Dockerの紹介Docker は Linux オペレーティングシステムの一部の機能をベースに...
目次元に戻すログUNDOログの生成と破棄UNDOログの保存元に戻すログ機能トランザクションの原子性の...
目次1. 概要1. 原則2. 実装3. スレーブインスタンスを作成する4. マスタースレーブ構成要約...
ページ上の画像を強調表示することは非常に一般的です。ここでは、jQuery を使用して画像を強調表示...
序文リアルタイムのデータベース バックアップの必要性は非常に一般的です。MySQL 自体はレプリケー...
この記事では、WeChatアプレットの計算機機能を実装するための具体的なコードを参考までに紹介します...
システムの入力と出力の管理1. システムの入力と出力を理解するLinuxシステムでは、1は正しい出力...
1. ソフトウェアをダウンロードする1. MySQL の公式サイトにアクセスし、Oracle アカウ...
Web Skills第5号では、CSSでダークモードやハイライトモードを実装するための技術的なソリュ...
1. 基本仕様(1)InnoDBストレージエンジンを使用する必要があります。解釈:トランザクション、...
テーブル ヘッダーでは、明るい境界線の色を個別に定義できます。基本的な構文<TH ボーダーカラ...
その理由はモッカー プラットフォームを導入したかったので、友人の勧めで既成のプロジェクト api-m...
推奨される Docker 学習教材: https://www.runoob.com/docker/d...
目次ミューテーションオブザーバーAPI特徴インターセクションオブザーバーAPI例えば画像の遅延読み込...
この記事では、CentOS 7 環境で MySQL 5.6 の複数のインスタンスを作成する方法につい...