なぜ最適化する必要があるのか
システムのスループットのボトルネックは、データベースのアクセス速度に現れることがよくあります。つまり、アプリケーションが実行されるにつれて、データベース内のデータがますます増え、処理時間もそれに応じて遅くなります。さらに、データはディスクに保存されるため、読み取りおよび書き込みの速度は比較できません。
#最適化の方法
1. データベースを設計するとき: データベースのテーブルとフィールド、ストレージ エンジンの設計2. Makeインデックスやステートメント記述の最適化など、MySQL 自体が提供する機能をうまく利用する3. MySQL クラスター、サブデータベースとサブテーブル、読み取りと書き込みの分離インターネットにはSQL ステートメントの最適化には多くの経験があるため、この記事ではこれらを脇に置き、DAO レイヤーとデータベース設計の最適化を試み、2 つの簡単な例を挙げます例 1:ERPクエリの最適化
現状分析:1. 関連するインデックスの欠如2. Mysql 自体のパフォーマンスは限られており、複数のテーブルの関連付けはサポートされていません。現在のパフォーマンスは、多くのテーブルに関連付けられているリスト クエリに主に焦点を当てています
2 最初にビジネス データのメイン テーブルの主キーを数え、より小さい結果セットを取得してから、結果セット関連付けクエリを使用します;
1) 最初にクエリを実行し、その主キーを表示します。メイン テーブルと条件に基づくビジネス データ
2) 主キーをクエリ条件として使用し、他の関連テーブルを関連付けて、必要なビジネス フィールドをクエリします。
3) メイン テーブルをクエリするとき、クエリ条件の場合、他のテーブルと関連付ける必要がある場合は、この条件が設定されている場合にのみテーブルの関連付けを設定する必要があります。
例如 有如下表 TT_A TT_B TT_C TT_D 假设未优化前的SQL是这样的 SELECT A.ID, .... B.NAME, ..... C.AGE, .... D.SEX ..... FROM TT_A A LEFT JOIN TT_B B ON A.ID = B.ITEM_ID LEFT JOIN TT_C C ON B.ID = C.ITEM_ID LEFT JOIN TT_D D ON C.ID = D.ITEM_ID WHERE 1=1AND A.XX = ?AND A.VV = ?..... 那么优化后的SQL是 第一步 SELECT A.ID FROM TT_A A WHERE 1=1AND A.XX = ?AND A.VV = ?第二步 SELECT A.ID, .... B.NAME, ..... C.AGE, .... D.SEX ..... FROM ( SELECT A.ID,..... FROM TT_A WHERE ID IN (1,2,3..) ) A LEFT JOIN TT_B B ON A.ID = B.ITEM_ID LEFT JOIN TT_C C ON B.ID = C.ITEM_ID LEFT JOIN TT_D D ON C.ID = D.ITEM_ID WHERE 1=1AND A.XX = ?AND A.VV = ?
概要:
例 2: 記事検索の最適化
Tieba の記事検索関数を作成するとします。最も単純かつ直接的な方法は、ストレージ構造として、リレーショナル データベースを使用して、記事を格納するためのリレーショナル データベース テーブル TT_ARTICLES を作成することです。select * from ARTICLES where CONTENT like '% 目标 %';これにより、検索機能が簡単に実装されます。ただし、このアプローチには明らかな問題があります。つまり、文字列の一致に % を使用するのは非常に非効率であるため、そのようなクエリはテーブル全体を走査する必要があります (フル テーブル スキャン)。記事数が数、数十の場合は問題ありませんが、記事数が数十万、数百万となる場合、この方法はまったく実現できません。言うまでもなく、単一のリレーショナル データベース テーブルではこのような大規模なデータを収容できません。たとえ収容できたとしても、再度スキャンする必要があります。ここでの時間コストは想像を絶します
要約:
これは 3 回の検索のように見えますが、そのたびにインデックスが使用されるため、全テーブル スキャンが不要になります。 , 速度も遅くなく、SQLで実装するとこの処理を全てSQL文に落とし込むことができます。データ量が少ない場合は上記の方法で十分です。これにより、テーブル全体のスキャンと文字列 % 一致クエリによって引き起こされるパフォーマンスの問題が解決されます。概要:
技術面接中に、実践的な例を挙げたり、開発プロセスの問題点や利点について直接話したりできる場合、面接は次のようになります。たくさん追加すると、答えはより論理的になるはずです。混乱しやすくなるため、あちこちに移動しないでください。たとえば、SQL を最適化する方法について尋ねられた場合、インデックスの追加について直接答えることはできません。次のように答えることができます:こんにちは、インタビュアーさん、まず第一に、私たちのプロジェクト DB データ量がボトルネックに遭遇しました。その結果、リスト クエリが非常に遅くなり、ユーザーのエクスペリエンスが低下します。この問題を解決するには、次のような多くの方法があります。基本的なデータベーステーブルの設計、基本的な SQL の最適化、MYSQL クラスタリング、読み書きの分離、サブデータベースとサブテーブル、アーキテクチャへのキャッシュ層の追加など。それらの長所と短所...これらを組み合わせて、次のように組み合わせます。私たちのプロジェクトの特徴 最後に、テクノロジーを選択するときに選択します。
あなたがこれほど整然と理路整然と質問に答え、質問以外にも多くの知識ポイントについて話せば、面接官はあなたがただコードを書けるだけでなく、あなたは明確なロジックを持っています。あなたはテクノロジの選択について独自の理解と考え方を持っています。
この記事は SQL チュートリアル 列からのものです。ぜひ学習してください。
以上がSQL クエリを最適化するにはどうすればよいですか? (詳しい説明)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

データ管理におけるSQLの役割は、クエリ、挿入、更新、削除を介してデータを効率的に処理および分析することです。 1.SQLは、ユーザーが構造化された方法でデータベースと通信できるようにする宣言言語です。 2。使用例には、基本的な選択クエリと高度な参加操作が含まれます。 3.句の忘却や誤用の結合などの一般的なエラーは、説明コマンドを介してデバッグできます。 4。パフォーマンスの最適化には、インデックスの使用と、コードの読みやすさや保守性などのベストプラクティスに従うことが含まれます。

SQLは、リレーショナルデータベースを管理および操作するために使用される言語です。 1.テーブルの作成:CreateTableUsersなどのCreateTableステートメントを使用します(IdintPrimaryKey、NameVarchar(100)、EmailVarchar(100)); 2。データを挿入、更新、削除:InsertInto、更新、incertintintousers(id、name、email)values(1、 'johndoe'、 'john@example.com')などのステートメントを削除します。 3。クエリデータ:Selecなどの選択ステートメントを使用します

SQLとMySQLの関係は次のとおりです。SQLはデータベースの管理と操作に使用される言語であり、MySQLはSQLをサポートするデータベース管理システムです。 1.SQLは、CRUD操作とデータの高度なクエリを許可します。 2.MYSQLは、パフォーマンスとセキュリティを改善するためのインデックス、トランザクション、ロックメカニズムを提供します。 3. MySQLのパフォーマンスを最適化するには、クエリの最適化、データベースの設計、監視とメンテナンスに注意が必要です。

SQLはデータベース管理とデータ操作に使用され、そのコア機能にはCRUD操作、複雑なクエリ、最適化戦略が含まれます。 1)CRUD操作:INSERTINTOを使用してデータを作成し、データの読み取りを選択し、データの更新を更新し、削除データを削除します。 2)複雑なクエリ:Groupbyを介して複雑なデータを処理し、条項を備えています。 3)最適化戦略:インデックスを使用し、完全なテーブルスキャンを避け、参加操作とページングのクエリを最適化してパフォーマンスを向上させます。

SQLは、構文が単純で、機能が強力であり、データベースシステムで広く使用されているため、初心者に適しています。 1.SQLは、リレーショナルデータベースを管理し、テーブルを介してデータを整理するために使用されます。 2。基本操作には、データの作成、挿入、クエリ、更新、削除が含まれます。 3.結合、サブクエリ、ウィンドウ関数などの高度な使用法により、データ分析機能が強化されます。 4.一般的なエラーには、検査と最適化を通じて解決できる構文、ロジック、パフォーマンスの問題が含まれます。 5.パフォーマンス最適化の提案には、インデックスの使用、Select*の回避、説明の使用を使用してクエリの分析、データベースの正規化、コードの読み取り可能性の向上が含まれます。

実際のアプリケーションでは、SQLは主にデータクエリと分析、データ統合とレポート、データのクリーニングと前処理、高度な使用と最適化、複雑なクエリの処理と一般的なエラーの回避に使用されます。 1)データのクエリと分析を使用して、最も販売製品を見つけることができます。 2)データの統合とレポートは、参加操作を通じて顧客の購入レポートを生成します。 3)データのクリーニングと前処理は、異常な年齢記録を削除できます。 4)高度な使用と最適化には、ウィンドウ関数の使用とインデックスの作成が含まれます。 5)CTEと結合を使用して、SQLインジェクションなどの一般的なエラーを回避するために複雑なクエリを処理できます。

SQLはリレーショナルデータベースを管理するための標準言語であり、MySQLは特定のデータベース管理システムです。 SQLは統一された構文を提供し、さまざまなデータベースに適しています。 MySQLは軽量でオープンソースで、パフォーマンスは安定していますが、ビッグデータ処理にはボトルネックがあります。

SQL学習曲線は急ですが、練習とコアの概念を理解することで習得できます。 1.基本操作には、選択、挿入、更新、削除が含まれます。 2。クエリの実行は、分析、最適化、実行の3つのステップに分けられます。 3.基本的な使用法は、従業員情報の照会など、Join Connection Tableの使用などです。 4.一般的なエラーには、エイリアスとSQLインジェクションの使用が含まれないことが含まれ、それを防ぐためにパラメーター化されたクエリが必要です。 5.パフォーマンスの最適化は、必要な列を選択し、コードの読みやすさを維持することにより達成されます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

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

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!
