実生活からの例社内の多くのクエリステートメントがselect * xxxxであることがわかりましたか? 私の頭の中にある考えは、他の人が select * と書いたので、それを書いて多くのトラブルを回避しよう、ということに違いありません。 クエリが遅い
データベースの遅いクエリオーバーヘッドを示す 3 つの指標
インデックスに移動すると id = 1 の場合、stu から * を選択します。 インデックスはクエリを最適化し、10 個のデータのみを返します。ID インデックスがない場合、数百または数千行のデータがアクセスされると推定されます。 ヒント: MySQLのEXPLAINコマンドを使用して、行に対応する行数を表示します。 実際、最適な状況は、ストレージ エンジン レベルで where を介して一致しないレコードをフィルター処理することです。2 番目に最適な状況は、インデックス ヒット スキャンをカバーし、クエリのためにテーブルに戻らずに、サーバー レベルで where を介して一致しないレコードをフィルター処理することです。最適な状況は、データ テーブルからデータを返してから、条件を満たさないレコードをフィルター処理することです。 最適化する方法インデックスカバレッジを使用して、必要なすべての列をインデックスに配置すると、テーブルに戻ってクエリを実行する必要がなくなり、テーブルを分離できます。 3. クエリをリファクタリングする(大きなクエリを小さなクエリに分割できます) 例: count、limit、max() カウントcount では必然的に多数の行をスキャンする必要があるため、count の最適な最適化はサマリー テーブルを追加することです。 制限次のコードに示すように、ページングを行うときに制限は非常に一般的です。 stu から id を選択し、id 制限で 1000,20 を並べ替えます。 このステートメントは 1020 個のデータをクエリし、最初の 1000 個を破棄して、1000 から 1020 までの 20 個のデータを返します。最適化する最良の方法は、インデックスを使用して、制限クエリを既知の位置を持つクエリに変換することです。 最大値と最小値 min&maxまず、主キーインデックスを使用する場合、クエリ時の最初の値が返したい最小値であると仮定します。主キーインデックスを使用して、limitを使用してデータ量を制御することもできます。これにより、min()関数の効果が得られ、minを置き換えることができます。 IDを選択 スタから address = 'bj' limit 1 の場合、index(primay) を使用します。 これにより、可能な限り少ないレコードがスキャンされます。 最後に、リラックスするために2つの質問をしてみましょう。 `従業員` テーブルで 2 番目に高い給与を検索します (給与) +----+--------+ | ID | 給与 | +----+--------+ | 1 | 100 | | 2 | 200 | | 3 | 300 | +----+--------+ 結果 +---------------------+ | 2番目に高い給与 | +---------------------+ | 200 | +---------------------+ 答え: max(Salary) SecondHighestSalary を選択 従業員から 給与 < (max(給与) を選択) 従業員より `Person` テーブル内の重複する電子メール アドレスをすべて検索します。 +----+---------+ | ID | メール | +----+---------+ | 1 | [email protected] | | 2 | [email protected] | | 3 | [email protected] | +----+---------+ 結果+---------+ | メール | +---------+ | メール: +---------+ 回答: 個人からメールを選択 メールでグループ化 count(Email) >= 2 であること; これで、MySQL 選択最適化ソリューションに関するこの記事は終了です。MySQL 選択最適化に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: 画像ソーシャルネットワーキングサイトのUIアプリケーションの比較分析(図)
>>: ブラウザ内でHTMLタグを中央に配置するCSSスタイル
目次ここでの問題は次の通りです:解決策1:解決策2: コンストラクタで初期化を割り当てる採掘場の概要...
目次基本的な設定バージョンとDockerイメージについて始めるelasticsearch.ymlにつ...
目次ショートポーリングロングポーリングウェブソケットコミュニケーションの原則シンプルな1対1チャット...
序文Linux サーバーを操作および管理するときに、最もよく使用されるコマンドの 1 つが nets...
バックエンド プログラマーは、さまざまな場所で Linux を扱います。Linux ログの読み方がわ...
最近、同社は CCFA 関連のいくつかの作業を行う予定で、その 1 つはカメラのリアルタイム監視を再...
ウェブサイトのモバイル版には、少なくともいくつかの基本機能が必要です。 1. ページの適用性の問題:...
この記事の例では、チャットインターフェースの表示を実現するためのVueの具体的なコードを参考までに共...
目次1. CentOS7.0へのJDK1.8のインストール2. Dockerのインストール3.Doc...
VMware Tools は VMware 仮想マシンに付属するツールで、VirtualBox (...
FTP は主にファイル転送に使用され、Linux では vsftpd で実装されるのが一般的です。F...
仮想DOMの役割まず、仮想 DOM の出現によってどのような問題が解決されるのかを知る必要があります...
本日の投稿では、Web デザインで使用される円形要素の優れた例をいくつか挙げ、美しい丸いボタン、メニ...
SQL では、GROUP BY は SELECT の結果のデータをグループ化するために使用されます。...
目次1. デフォルトの焦点はボディにあります2. テキストボックスのフォーカスを手動で取得する3. ...