最適化のアイデア
MySQL 最適化の詳細な手順は次のとおりです。
- データ テーブルの構造を確認し、不完全な設計を改善します
- 本業を実行し、よく使われるデータベースクエリSQLを収集
- クエリSQLを分析し、適切に分割し、インデックスを追加するなどしてクエリを最適化します
- SQLを最適化しつつ、最適化を行いますコードのロジック # #ローカル キャッシュと Redis キャッシュを追加する
NULL 値を使用しないようにしてください## なぜなら、テーブルを作成するときに、作成された値にデフォルト値を設定しないでください。MySQL はデフォルトで NULL
に設定されます。では、なぜNULL を使用するのは良くないのでしょうか?
- を使用すると、インデックスのメンテナンスがより複雑になります。
- NOT NULL
NOT IN
を設定することを強くお勧めします。 、#!= - およびその他の負の条件付きクエリは、
NULL
値がある場合に常に空の結果を返し、クエリは# でエラーが発生しやすくなります。
##NULL列
NULL -
NULL
であるかどうかを決定するためのフラグとして追加のバイトが必要です。
NULL を使用する場合、そうでない可能性があります。列内の他の値と同じ型であるため、問題が発生します。 (言語によって動作が異なります) -
MySQL は、
NULL -
となる可能性のあるカラムのクエリを最適化するのが難しいため、以前は遅延していたフィールドについては、手動でデフォルト値の空の文字列を設定し、0を追加します。
頻繁にクエリされるフィールドについては、インデックスを追加してください。インデックスがある場合とない場合では、クエリ速度が 10 倍以上異なります。
一般的に、各テーブルには主キーが必要です
id- Field
クエリによく使用されるフィールドにはインデックスを付ける必要があります
- varchar 型のフィールドの場合、インデックスを作成するときは長さを指定するのが最善です
クエリに複数の条件がある場合、インデックスを含む条件が優先されます
Like - LIKE 条件付きあいまい検索はフィールド インデックスに対して無効であり、問題を解決するには追加のキーワード インデックスを確立する必要があります
-
データベース レベルでテーブル間の関係を制限しないようにしてください
、これらのテーブル間の依存関係はコード レベルで解決する必要があります - テーブル間に制約がある場合、追加、削除、クエリの SQL ステートメントは単純になりますが、挿入などの悪影響が生じます。データベースの操作時に制約がチェックされます (ただし、制約は手動で無視できます)。これは、データベース層にビジネス ロジックを書き込むことと同等であり、保守が不便です。
データベース内の整数で表現できるデータには文字列型を使用しないでください。varchar## を使用する必要がありますか? # または
charフィールドの可能な値によって異なります。 データベース内に大量のデータがある場合、この種の最適化は実現できないことが多いため、データベース設計の前に最適化を設計することをお勧めします。
VARCHAR
の代わりに- tinyint
- を使用します。
たとえば、モバイル デバイスを記録する場合、プラットフォームの場合、値は android、ios の 2 つだけです。android を表すには 0 を使用し、ios を表すには 1 を使用できます。この列はコメント化する必要があります
- ENUM
- を使用しないのはなぜですか? ENUM
- 拡張の難しさ。たとえば、後でモバイル プラットフォームに
ipad
が追加されましたが、これは混乱を招くでしょうが、tinyint
は単に 2 を追加するだけであり、ENUM
はコード内で扱うのが非常に奇妙で、整数として扱われるか文字列として扱われるかは言語によって異なります。このメソッドでは、各値の意味をデータベース コメントまたはコードに記述する必要があります。
- これらの固定長文字列には、 char を使用できます。
- 長さが不明な文字列の場合は、
varchar
- を使用し、
bigint## を乱用しないでください。 #、レコードなど 記事数テーブルの
id フィールドには - int
を使用し、上限は 21 億記事で十分です。データベース パラダイムを適切に打ち破り、クエリを回避するために冗長フィールドを追加します。テーブル接続
をクエリする場合、
int
型は varchar - よりも高速である必要があります。整数の比較は基になる演算子を直接呼び出すことで実現できますが、文字列型の比較は文字ごとに行われます。
大規模なテーブルの分割
データ量が近い将来 500 万を超える可能性があるテーブルや、急速に増加するテーブルの場合は、必ず事前にテーブルを垂直または水平に分割してください。ボリュームが 100 万を超えると、クエリ速度が大幅に低下します。
データベース設計の初期段階でサブデータベースとサブテーブルの計画を最終決定するようにしてください。そうしないと、コードが大幅に複雑になり、後で変更することが困難になります。
垂直テーブル パーティショニングは日付などの外部変数に基づき、水平テーブル パーティショニングはテーブル内の特定のフィールドの関係に基づき、ハッシュ マッピングを使用してテーブルを均等な部分に分割します。
サブデータベースとテーブルサブデータベースの前提条件は、クエリステートメントを実行する前に、クエリ対象のデータがどのサブデータベースとどのサブテーブルに分類されるかをすでに知っていることです。
クエリ ステートメントの最適化
これは、多くのシステム データベースのボトルネックの原因となります。
- 単純なクエリを使用し、テーブル リンクの使用を避けてください。
- フル テーブル スキャンを回避するようにしてください。フル テーブル スキャンを引き起こすステートメントには次のものがありますが、これらに限定されません:
- where 句の条件は常に true または空です
- Use
LIKE
- 不等号演算子 (, !=)
- を使用します
is null
- を含む列をクエリする インデックス以外の列で
or
- を使用して複数の条件でクエリを実行する場合、単純なクエリ条件またはインデックス列クエリを先頭に置いてください。
- クエリを実行する必要がある列を指定してください。select を使用するのを怠らないでください。*
- 指定しない場合は、一方で、冗長なデータが返され、帯域幅などを占有します。
- 一方、MySQL がクエリを実行するとき、フィールドがない場合は、最初にテーブル構造内のフィールドをクエリします。 .
- 大文字のクエリ キーワードは小文字のクエリ キーワードよりも若干高速です
- サブクエリを使用すると一時テーブルが作成され、リンク (JOIN) やユニオン (UNION) よりも若干遅くなります。 )
- インデックス フィールドでクエリを実行する場合は、クエリ結果をキャッシュするのに不都合なため、データベース関数を使用しないようにしてください。
- データが 1 行しかない場合は、LIMIT 1 を使用してください。データが多すぎるため、LIMIT を適切に設定してページング クエリを実行してください。 #ORDER BY RAND() は絶対に使用しないでください。パフォーマンスが非常に低くなります。
#キャッシュを追加しますredis やローカル ファイル キャッシュなどのキャッシュを使用すると、データベース クエリの数を大幅に減らすことができます。キャッシュに関しては、独自のシステムのデータ特性を分析し、適切な選択を行う必要があります。
構成情報などの一部の一般的に使用されるデータについては、キャッシュに配置できます。- データベースのテーブル構造はローカルにキャッシュできます。
- キャッシュされたデータはタイムリーな更新に注意し、有効期間を設定する必要があります。 #キャッシュを増やすとシステムの複雑さが確実に増すため、トレードオフに必ず注意してください
推奨学習: 「mysql ビデオ チュートリアル
」以上がMySQL 最適化の最も基本的な操作を要約します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

MySQLは、初心者がデータベーススキルを学ぶのに適しています。 1.MySQLサーバーとクライアントツールをインストールします。 2。selectなどの基本的なSQLクエリを理解します。 3。マスターデータ操作:テーブルを作成し、データを挿入、更新、削除します。 4.高度なスキルを学ぶ:サブクエリとウィンドウの関数。 5。デバッグと最適化:構文を確認し、インデックスを使用し、選択*を避け、制限を使用します。

MySQLは、テーブル構造とSQLクエリを介して構造化されたデータを効率的に管理し、外部キーを介してテーブル間関係を実装します。 1.テーブルを作成するときにデータ形式と入力を定義します。 2。外部キーを使用して、テーブル間の関係を確立します。 3。インデックス作成とクエリの最適化により、パフォーマンスを改善します。 4.データベースを定期的にバックアップおよび監視して、データのセキュリティとパフォーマンスの最適化を確保します。

MySQLは、Web開発で広く使用されているオープンソースリレーショナルデータベース管理システムです。その重要な機能には、次のものが含まれます。1。さまざまなシナリオに適したInnodbやMyisamなどの複数のストレージエンジンをサポートします。 2。ロードバランスとデータバックアップを容易にするために、マスタースレーブレプリケーション機能を提供します。 3.クエリの最適化とインデックスの使用により、クエリ効率を改善します。

SQLは、MySQLデータベースと対話して、データの追加、削除、変更、検査、データベース設計を実現するために使用されます。 1)SQLは、ステートメントの選択、挿入、更新、削除を介してデータ操作を実行します。 2)データベースの設計と管理に作成、変更、ドロップステートメントを使用します。 3)複雑なクエリとデータ分析は、ビジネス上の意思決定効率を改善するためにSQLを通じて実装されます。

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

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

MySQLデータベースを構築する手順には次のものがあります。1。データベースとテーブルの作成、2。データの挿入、および3。クエリを実行します。まず、createdAtabaseおよびcreateTableステートメントを使用してデータベースとテーブルを作成し、InsertINTOステートメントを使用してデータを挿入し、最後にSelectステートメントを使用してデータを照会します。

MySQLは、使いやすく強力であるため、初心者に適しています。 1.MYSQLはリレーショナルデータベースであり、CRUD操作にSQLを使用します。 2。インストールは簡単で、ルートユーザーのパスワードを構成する必要があります。 3.挿入、更新、削除、および選択してデータ操作を実行します。 4. Orderby、Where and Joinは複雑なクエリに使用できます。 5.デバッグでは、構文をチェックし、説明を使用してクエリを分析する必要があります。 6.最適化の提案には、インデックスの使用、適切なデータ型の選択、優れたプログラミング習慣が含まれます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

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

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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