この記事は、「1 分でインデックス作成スキルを学ぶ」という宿題から生まれました。 注文ビジネス テーブルの構造が次のとおりであると仮定します。 順序(oid、日付、uid、ステータス、金額、時間、…) で:
注文には 0 が発注済み、1 が支払い済み、2 が完了の 3 つの状態があるとします。 ビジネス要件: 未完了の注文をクエリする場合、どの SQL の方が高速ですか?
結論: ソリューション 1 は最も遅く、ソリューション 2、3、4 はすべてインデックスにヒットできます。 しかし... 1: union allは確実にインデックスにヒットする ステータス=0 の順序から * を選択 すべて結合 ステータスが 1 である順序から * を選択 例: MySQLに何をするかを直接指示すると、MySQLはCPUを最も少なく消費します プログラマーはこのようなSQLを書くことはあまりありません(union all) 2: シンプルインでインデックスにヒットできる ステータスが (0,1) である順序から * を選択 例: MySQLに考えさせると、クエリの最適化はunion allよりも多くのCPUを消費しますが、無視できるほどです。 プログラマーはSQLを次のように書くことが多い。この例では、次のように書くのが推奨される。 3: または、MySQLの新しいバージョンはインデックスにヒットすることができます ステータス=0 またはステータス=1 の順序から * を選択します 例: MySQL に考えさせてください。クエリの最適化は IN よりも多くの CPU を消費します。MySQL に負担をかけないでください。 すべての or がインデックスにヒットするわけではないので、プログラマが or を頻繁に使用することは推奨されません。 MySQLの古いバージョンの場合は、クエリと分析を行うことをお勧めします。 4. !=の場合、否定クエリは確実にインデックスにヒットしません ステータスが 2 である順序から * を選択 例: フルテーブルスキャンは、すべてのソリューションの中で最も効率が悪く、最も遅い 否定的な検索は禁止されています V. その他のオプション ステータスが 2 未満の順序から * を選択 この特定の例では、確かに高速ですが、 この例では、3 つの状態のみが示されています。実際の業務では、これら 3 つの状態よりも多くの状態があり、状態の「値」は半順序関係を満たすだけです。他の状態をチェックしたい場合はどうすればよいでしょうか。SQL は列挙の値に依存すべきではなく、解決策は普遍的ではありません。 この SQL は読みにくく、理解しにくく、保守性も低いため、強く推奨されません。 6. 宿題 このようなクエリはインデックスにヒットできますか? uid in (の順序で*を選択 ステータス=0の注文からUIDを選択 ) select * from order where status in (0, 1) order by date desc ステータスが 0 または日付が CURDATE() である順序から * を選択します 注: これは単なる例です。業務に対応する SQL の合理性についてはあまりこだわらないでください。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
<<: Tomcat で複数の war パッケージを展開する方法と手順
>>: vue+px2rem(rem適応)を使用してPCで大画面適応を実装するためのサンプルコード
MySQL-8.0.22-winx64のデータベースインストールチュートリアルは参考になります。具体...
CSS の font-family プロパティを使用して中国語フォントを参照する場合、フォントを定義...
目次1. 高可用性の概要1.1 可用性の高い全体アーキテクチャ1.2 QJMに基づく共有ストレージシ...
注意: 他のマシン (IP) は、承認なしではクライアント経由で MySQL データベースに接続でき...
この記事では、簡単なドラッグ効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...
vsftpd の概要vsftpd は「very secure FTP daemon」の略称で、セキ...
目次序文1. forループ2. whileループとdo-whileループ3. forEach、map...
MySQL パフォーマンスの最適化MySQL はインターネット企業で広く使用されており、MySQL ...
ビルドを無効にするパーティション式では、次の構成はサポートされません。ストアドプロシージャ、ストアド...
文字化けしたコードの問題は次のとおりです。 この問題の原因は非常に単純です。コマンドラインのエンコー...
HTMLを学ぶとき、画像タグ<img>は画像を導入します <img src=&qu...
目次1. 基本的な環境設定2. データベースをインストールする3. zabbix関連コンポーネントを...
1. はじめに:友人はシステム知識を学びたいと考えており、Apple のラップトップを使用していまし...
序文Docker は過去 2 年間で非常に人気が高まっています。開発者はすべてのアプリケーションとソ...
序文プロジェクトのリリースでは、常に特定の状況に応じたパッケージ化が必要です。Angular CLI...