究極のガイド - より良い SQL クエリを作成するには?
逆モデルでは、クエリ構築に対するセットベースのアプローチとプログラムベースのアプローチには違いがあるという事実が暗黙的に示されています。
- クエリに対する手続き型アプローチは、プログラミングに非常によく似たアプローチです。何を行う必要があるか、そしてそれをどのように実行するかをシステムに指示します。たとえば、前の記事の例のように、1 つの関数を実行してから別の関数を呼び出すことによってデータベースにクエリを実行するか、ループ、条件、およびユーザー定義関数 (UDF) を含む論理的アプローチを使用して最終的なクエリ結果を取得します。このようにして、常に各レイヤーのデータのサブセットをリクエストしていることがわかります。このアプローチは、ステップバイステップまたは行ごとのクエリとも呼ばれることがよくあります。
- もう 1 つはコレクションベースの方法で、実行する必要がある操作を指定するだけで済みます。このメソッドで行う必要があるのは、クエリを通じて取得したい結果の条件と要件を指定することです。データを取得するとき、クエリを実装する内部メカニズムに注意を払う必要はありません。データベース エンジンがクエリを実行するための最適なアルゴリズムとロジックを決定します。
SQL はセットベースであるため、このアプローチは手続き型アプローチよりも効率的です。これが、場合によっては SQL がコードよりも高速に動作する理由の説明になります。
セットベースのクエリ手法も、データ マイニング分析業界で習得が求められるスキルです。これら 2 つの方法を切り替えるには熟練する必要があるからです。クエリに手続き型クエリが含まれていることがわかった場合は、この部分を書き直す必要があるかどうかを検討する必要があります。
リバース モードは静的ではありません。 SQL 開発者になるにつれて、クエリのリバース モデルを回避し、クエリを書き直すのは困難な作業になる可能性があります。したがって、多くの場合、より構造化された方法でクエリを最適化するツールを使用する必要があります。
パフォーマンスについて考えるには、より構造化されたアプローチだけでなく、より深いアプローチも必要です。
ただし、この構造化された詳細なアプローチは主にクエリ プランに基づいています。クエリ プランは最初に「解析ツリー」に解析され、各操作にどのようなアルゴリズムが使用されるか、および操作がどのように調整されるかを正確に定義します。
クエリの最適化クエリを最適化するときは、オプティマイザーによって生成されたプランを手動で検査する必要がある可能性が高くなります。この場合、クエリ プランを確認してクエリを再度分析する必要があります。
このようなクエリ プランをマスターするには、データベース管理システムが提供するいくつかのツールを使用する必要があります。次のツールのいくつかを使用できます:
- 一部のソフトウェア パッケージ機能ツールは、クエリ プランのグラフィカル表現を生成できます。
- 他のツールでは、クエリ プランのテキストによる説明を提供できます。
PostgreSQL を使用している場合は、さまざまな EXPLAIN を区別でき、プランを実行せずにプランナーがクエリを実行する方法の説明を取得するだけであることに注意してください。同時に、EXPLAIN ANALYZE はクエリを実行し、クエリ プランと実際のクエリ プランを評価する分析レポートを返します。一般に、実際の実行プランは実際にプランを実行しますが、評価された実行プランはクエリを実行せずにこの問題を解決できます。論理的には、実際の実行計画には、クエリの実行時に実際に何が起こったかに関する追加の詳細と統計が含まれているため、より有用です。
次に、XPLAIN と ANALYZE についてさらに詳しく学び、これら 2 つのコマンドを使用してクエリ プランとクエリ パフォーマンスをさらに理解する方法を学びます。これを行うには、one_million とhalf_million の 2 つのテーブルを使用していくつかの例を実行する必要があります。
EXPLAIN を使用して、one_million テーブルの現在の情報を取得できます。クエリを実行するときに必ず最初の場所に配置してください。実行が完了すると、情報はクエリ プランに返されます。
リーリー上記の例では、クエリのコストが 0.00..18584.82、行数が 1025082、列幅が 36 であることがわかります。
同時に、ANALYZE を使用して統計情報を更新することもできます。
リーリーEXPLAIN と ANALYZE に加えて、EXPLAIN ANALYZE を使用して実際の実行時間を取得することもできます。
リーリーEXPLAIN ANALYZE を使用する欠点は、実際にクエリを実行する必要があることですが、これは注目に値します。
これまで見てきたすべてのアルゴリズムは、シーケンシャル スキャンまたはフル テーブル スキャンです。これは、テーブルの各行がシーケンシャル (逐次) 順序でスキャンされるデータベース上でスキャンを実行する方法です。読み取り時に、各列が基準を満たしているかどうかがチェックされます。パフォーマンスの観点から見ると、テーブル全体をスキャンする必要があるため、シーケンシャル スキャンは最適な実行プランではありません。ただし、遅いディスクを使用すると、シーケンシャル読み取りも高速になります。
他のアルゴリズムの例もいくつかあります:
リーリークエリ オプティマイザーがハッシュ結合を選択したことがわかります。この操作はクエリの時間計算量を評価するために使用する必要があるため、覚えておいてください。上記の例では、half_million.counter インデックスが存在しないことに気付きました。次の例では、インデックスを追加できます:
リーリーインデックスを作成することにより、クエリ オプティマイザーはインデックスのスキャン時にマージ結合を見つける方法を決定します。
インデックス スキャンとフル テーブル スキャン (順次スキャン) の違いに注意してください。後者 (「テーブル スキャン」とも呼ばれます) は、すべてのデータをスキャンするか、すべてのページにインデックスを付けることによって適切な結果を見つけます。一方、前者は、テーブル内のすべての行のみをスキャンします。テーブル。
ここではチュートリアルの 2 番目の部分を紹介します。シリーズの最終記事「より良い SQL クエリの作成方法」が続きますので、お楽しみに。
転載元を明記してください: Grape City Control
以上が究極のガイド - より良い SQL クエリを作成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Centosとubuntuの重要な違いは次のとおりです。起源(CentosはRed Hat、for Enterprises、UbuntuはDebianに由来します。個人用のDebianに由来します)、パッケージ管理(CentosはYumを使用し、安定性に焦点を当てます。チュートリアルとドキュメント)、使用(Centosはサーバーに偏っています。Ubuntuはサーバーやデスクトップに適しています)、その他の違いにはインストールのシンプルさが含まれます(Centos is Thin)

Centosのインストール手順:ISO画像をダウンロードし、起動可能なメディアを燃やします。起動してインストールソースを選択します。言語とキーボードのレイアウトを選択します。ネットワークを構成します。ハードディスクをパーティション化します。システムクロックを設定します。ルートユーザーを作成します。ソフトウェアパッケージを選択します。インストールを開始します。インストールが完了した後、ハードディスクから再起動して起動します。

Centosは廃止されました、代替品には次のものが含まれます。1。RockyLinux(最高の互換性)。 2。アルマリン(Centosと互換性); 3。Ubuntuサーバー(設定が必要); 4。RedHat Enterprise Linux(コマーシャルバージョン、有料ライセンス); 5。OracleLinux(CentosとRhelと互換性があります)。移行する場合、考慮事項は次のとおりです。互換性、可用性、サポート、コスト、およびコミュニティサポート。

Dockerデスクトップの使用方法は? Dockerデスクトップは、ローカルマシンでDockerコンテナを実行するためのツールです。使用する手順には次のものがあります。1。Dockerデスクトップをインストールします。 2。Dockerデスクトップを開始します。 3。Docker Imageを作成します(DockerFileを使用); 4. Docker画像をビルド(Docker Buildを使用); 5。Dockerコンテナを実行します(Docker Runを使用)。

DockerはLinuxカーネル機能を使用して、効率的で孤立したアプリケーションランニング環境を提供します。その作業原則は次のとおりです。1。ミラーは、アプリケーションを実行するために必要なすべてを含む読み取り専用テンプレートとして使用されます。 2。ユニオンファイルシステム(UnionFS)は、違いを保存するだけで、スペースを節約し、高速化する複数のファイルシステムをスタックします。 3.デーモンはミラーとコンテナを管理し、クライアントはそれらをインタラクションに使用します。 4。名前空間とcgroupsは、コンテナの分離とリソースの制限を実装します。 5.複数のネットワークモードは、コンテナの相互接続をサポートします。これらのコア概念を理解することによってのみ、Dockerをよりよく利用できます。

CentOSが停止した後、ユーザーは次の手段を採用して対処できます。Almalinux、Rocky Linux、Centosストリームなどの互換性のある分布を選択します。商業分布に移行する:Red Hat Enterprise Linux、Oracle Linuxなど。 Centos 9ストリームへのアップグレード:ローリングディストリビューション、最新のテクノロジーを提供します。 Ubuntu、Debianなど、他のLinuxディストリビューションを選択します。コンテナ、仮想マシン、クラウドプラットフォームなどの他のオプションを評価します。

障害のあるDocker画像ビルドのトラブルシューティング手順:DockerFileの構文と依存関係バージョンを確認します。ビルドコンテキストに必要なソースコードと依存関係が含まれているかどうかを確認します。エラーの詳細については、ビルドログを表示します。 -targetオプションを使用して、階層フェーズを構築して障害点を識別します。 Dockerエンジンの最新バージョンを使用してください。 -t [image-name]:デバッグモードで画像を作成して、問題をデバッグします。ディスクスペースを確認し、十分であることを確認してください。 Selinuxを無効にして、ビルドプロセスへの干渉を防ぎます。コミュニティプラットフォームに助けを求め、DockerFilesを提供し、より具体的な提案のためにログの説明を作成します。

VSコードシステムの要件:オペレーティングシステム:オペレーティングシステム:Windows 10以降、MACOS 10.12以上、Linux Distributionプロセッサ:最小1.6 GHz、推奨2.0 GHz以上のメモリ:最小512 MB、推奨4 GB以上のストレージスペース:最低250 MB以上:その他の要件を推奨:安定ネットワーク接続、XORG/WAYLAND(Linux)
