MySQL クエリの効率とクエリ速度の最適化を向上させる方法は何ですか?
1. EXPLAIN キーワードを使用してクエリ ステートメントの欠陥を評価します
作成者は、次の図に示すように、データベース内で単純な Select クエリ ステートメントを実行して、テーブル内のすべての情報を取得しました。ここで、データベース管理者は、このステートメントの実行時にデータベースがどのような作業を行ったか、またはこのクエリ ステートメントをさらに最適化する可能性があるかどうかを知りたいと考えています。この情報を知りたい場合は、クエリ ステートメントに Explain キーワードを追加できます。
テーブル内のデータは、Select クエリ ステートメントを通じてデータベースからクエリできます。実行効率と最適化の余地は、この単純なクエリ ステートメントから導き出すことはできません。より詳細な情報を理解するには、Explain キーワードを追加する必要があります。次の図に示すように、
Explain キーワードを追加した後、システムはテーブル内のデータをクエリせず、クエリ プロセス中に一部の情報を表示するだけです。この情報は、その後のデータベース クエリの最適化に非常に役立ちます。上記の情報から、ユーザーが単純なクエリを作成しただけであることがわかります。このクエリでは、インデックス、キーワード、Where ステートメントは使用されません。このため、このクエリ ステートメントはあまり合理的ではありません。最終的に正しい結果を見つけることはできますが、クエリの効率はあまり明らかではない場合があります。この目的のために、データベースの専門家は上記の情報に基づいて最適化を実行できます。次の図に示すように、クエリに WHERE ステートメントを追加すると、結果はどうなるでしょうか?
Where ステートメントが最後の Extra フィールドで使用されると、システムはそれが使用されたことを表示します。データベースの最適化中に、NULL フィールドまたは結果に空のコンテンツを含むフィールドをキャプチャする必要があります。多くの場合、これらの場所が最適化の焦点となります。図に示すように、テーブルにキーワードまたはインデックスを設定することで、この Select ステートメントを最適化し、クエリの効率を向上させることができます。
2. データを比較するときに同じ型の列を使用してクエリ効率を向上させます
データをクエリする際、条件文に判定条件を追加することがあります。ユーザー基本情報テーブルとユーザー権限テーブルの 2 つのテーブルがあり、ユーザー番号ごとに関連付けられています。各ユーザーの権限情報を照会するには、ユーザー番号を照会条件として使用する必要があります。ここで、ユーザー基本情報テーブルのユーザー番号フィールドの型が CHAR、ユーザー権限テーブルのユーザー番号フィールドの型が VARCHAR であるとします。これら 2 つのデータ型はどちらも文字型ですが、同じ型ではありません。さて、これら 2 つのテーブルに対して相関クエリを実行するときのクエリ効率はどのくらいでしょうか? 最初に判断する必要があるのは、これらは異なる種類の文字データであっても、相互に互換性があるかどうかです。最終的には正しい結果を得ることができます。この点を明確にした上で、このクエリ ステートメントが最適化できるかどうかを考えてみましょう
別の仮定を立ててみましょう。現在、両方のテーブルのユーザー番号のデータ型は CHAR です。次に、これら 2 つのテーブルに対して関連するクエリを実行します。得られる結果は同じですか? テストの結果、クエリの結果は同じですが、費やした時間は異なります。データの量が増加するにつれて、2 つのクエリ間の時間差はますます長くなります。ここから、2 つのクエリ ステートメントは同等ですが、クエリ効率が異なることがわかります。
MySQL データベースではデータ型に互換性がありますが、比較は可能です。ただし、クエリの効率は影響を受けます。データベース クエリの効率を向上させるために、著者は、クエリ条件ステートメントで同じ種類の列を比較するのが最善であると推奨しています。同じ条件下では、同じ列タイプの方が、異なるタイプの列よりも優れたパフォーマンスを提供できます。これは、大量のデータを含むデータベースでは特に重要です。
ただし、この最適化にはデータ テーブルの列タイプを含める必要があります。このため、データ テーブルを設計する際にはこれを考慮する必要があります。上記の場合、これら 2 つのテーブルにユーザー ID 列を具体的に追加できます。一連の整数型を使用して、システムが自動的に番号を付けることができます。次に、クエリを実行するときに、元のユーザー番号列を介して比較するのではなく、このユーザー ID 列を介して比較します。相対的にクエリ操作の効率が高くなります。
3. Like キーワードの先頭にワイルドカードを使用する場合は注意してください
実際の作業で、著者は多くのデータベース管理者が悪い習慣を持っていることに気付きました。 Like などのキーワードを使用する場合、ワイルドカードがランダムに使用されます。たとえば、ユーザーは「LOOK」という接頭辞が付いたすべての製品情報を検索する必要があります。クエリを実行するとき、ユーザーは通常、「%LOOK%」のようなステートメントを使用することに慣れています。この条件ステートメントは、LOOK という接頭辞が付いた製品情報のみを取得するのではなく、製品名に LOOK という単語を含むすべてのレコードを取得します。
ただし、最終結果は同じになる可能性があります。ただし、この 2 つのクエリ効率は異なります。実際、この問題の大部分は、クライアント アプリケーションの不適切な設計によって引き起こされます。たとえば、クライアント アプリケーションを設計する場合、システムはデフォルトで % 記号を表示します。以下に示すように。
この設計の意図は優れており、システムがあいまいクエリをサポートできるようになります。しかし、実際の操作ではユーザーが問題を抱えている可能性があります。ユーザーがクエリ時に % の前に LOOK という単語を入力せず、% の後に単語を入力した場合。クエリを実行すると、カーソルは自動的に % 記号の後ろに配置されるためです。通常、ユーザーは入力時にカーソルの位置を調整しません。この時、上記のような状況が発生しました。
予期せぬ状況を避けるために、著者は、「Like」の後にワイルドカードを続けるようなキーワードを使用するときは十分に注意することを強くお勧めします。特に大量のデータからレコードを検索する場合は、このワイルドカードの位置を適切な場所で使用する必要があります。最初に別のワイルドカードを使用できる場合は、ワイルドカードを使用しないようにしてください。
4. Like キーワードを他の形式で置き換えてみる
前述したように、Like キーワードを使用するときはワイルドカードの位置に注意する必要があります。クエリ効率の観点から、ワイルドカードの位置に注意し、「Like」キーワードの使用をできるだけ避ける必要があります。実際、SQL ステートメントでは、他のメソッドを使用して Like キーワードを置き換えることができます。たとえば、6 桁の番号を持つ商品テーブルがあります。次に、9 で始まる製品番号をクエリする必要があります。これを行うにはどうすればよいですか?
まず、LIKE "9%" などの Like キーワードを使用します。このワイルドカードの位置に注意してください。この条件ステートメントにより、必要な結果を見つけることができます。しかし、パフォーマンスの最適化の観点から見ると、このステートメントは適切な対処方法ではありません。いくつかの妥協によってこれを達成することもできます。
2 つ目は、シンボルを比較することによって実現されます。この文は次のように再定式化できます。 これは、900000 ~ 999999 の値を持つメソッドを使用することで実現できます。ただし、両方のクエリの結果は同じです。ただし、このステートメントのクエリ時間は、Like 記号を使用した上記のステートメントよりもはるかに短くなります。
以上がMySQL クエリの効率とクエリ速度の最適化を向上させる方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

DockerでMySQLを起動するプロセスは、次の手順で構成されています。MySQLイメージをプルしてコンテナを作成および起動し、ルートユーザーパスワードを設定し、ポート検証接続をマップしてデータベースを作成し、ユーザーはすべての権限をデータベースに付与します。

MySQLとPHPMyAdminは、強力なデータベース管理ツールです。 1)MySQLは、データベースとテーブルを作成し、DMLおよびSQLクエリを実行するために使用されます。 2)PHPMyAdminは、データベース管理、テーブル構造管理、データ操作、ユーザー許可管理のための直感的なインターフェイスを提供します。

小さなアプリケーションを開発する際には、軽量データベース操作ライブラリをすばやく統合する必要性という厄介な問題に遭遇しました。複数のライブラリを試した後、私はそれらがあまりにも多くの機能を持っているか、あまり互換性がないかのどちらかであることがわかりました。最終的に、私は問題を完全に解決したYii2に基づいた単純化されたバージョンであるMinii/DBを見つけました。

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

MySQLの基本操作には、データベース、テーブルの作成、およびSQLを使用してデータのCRUD操作を実行することが含まれます。 1.データベースの作成:createdatabasemy_first_db; 2。テーブルの作成:createTableBooks(idintauto_incrementprimarykey、titlevarchary(100)notnull、authorvarchar(100)notnull、published_yearint); 3.データの挿入:InsertIntoBooks(タイトル、著者、公開_year)VA
