目次
## なぜなら、テーブルを作成するときに、作成された値にデフォルト値を設定しないでください。MySQL はデフォルトで NULL" > NULL 値を使用しないようにしてください## なぜなら、テーブルを作成するときに、作成された値にデフォルト値を設定しないでください。MySQL はデフォルトで NULL
頻繁にクエリされるフィールドについては、インデックスを追加してください。インデックスがある場合とない場合では、クエリ速度が 10 倍以上異なります。 " >頻繁にクエリされるフィールドについては、インデックスを追加してください。インデックスがある場合とない場合では、クエリ速度が 10 倍以上異なります。
redis やローカル ファイル キャッシュなどのキャッシュを使用すると、データベース クエリの数を大幅に減らすことができます。キャッシュに関しては、独自のシステムのデータ特性を分析し、適切な選択を行う必要があります。 " >#キャッシュを追加しますredis やローカル ファイル キャッシュなどのキャッシュを使用すると、データベース クエリの数を大幅に減らすことができます。キャッシュに関しては、独自のシステムのデータ特性を分析し、適切な選択を行う必要があります。
ホームページ データベース mysql チュートリアル MySQL 最適化の最も基本的な操作を要約します。

MySQL 最適化の最も基本的な操作を要約します。

Nov 15, 2021 pm 03:47 PM
mysql 最適化

最適化のアイデア

MySQL 最適化の詳細な手順は次のとおりです。

  • データ テーブルの構造を確認し、不完全な設計を改善します
  • 本業を実行し、よく使われるデータベースクエリSQLを収集
  • クエリSQLを分析し、適切に分割し、インデックスを追加するなどしてクエリを最適化します
  • SQLを最適化しつつ、最適化を行いますコードのロジック
  • # #ローカル キャッシュと Redis キャッシュを追加する
に設定されます。では、なぜ

NULL を使用するのは良くないのでしょうか?

NULL
    を使用すると、インデックスのメンテナンスがより複雑になります。
  • NOT NULLNOT IN
  • を設定することを強くお勧めします。 、#!=
  • およびその他の負の条件付きクエリは、NULL 値がある場合に常に空の結果を返し、クエリは # でエラーが発生しやすくなります。 ##NULLNULL
  • NULL であるかどうかを決定するためのフラグとして追加のバイトが必要です。NULL
  • を使用する場合、そうでない可能性があります。列内の他の値と同じ型であるため、問題が発生します。 (言語によって動作が異なります)
  • MySQL は、NULL
  • となる可能性のあるカラムのクエリを最適化するのが難しいため、以前は遅延していたフィールドについては、手動でデフォルト値の空の文字列を設定し、0を追加します。
この方法では MySQL のパフォーマンスはあまり向上しませんが、これは良い習慣であり、小さなことから大きなことまで見ることができるため、これらの詳細を無視しないでください。

インデックスの追加

一般的に、各テーブルには主キーが必要です

id
    Field
  • クエリによく使用されるフィールドにはインデックスを付ける必要があります
  • varchar
  • 型のフィールドの場合、インデックスを作成するときは長さを指定するのが最善です
  • クエリに複数の条件がある場合、インデックスを含む条件が優先されます
  • Like
  • LIKE
  • 条件付きあいまい検索はフィールド インデックスに対して無効であり、問​​題を解決するには追加のキーワード インデックスを確立する必要があります
  • データベース レベルでテーブル間の関係を制限しないようにしてください
  • 、これらのテーブル間の依存関係はコード レベルで解決する必要があります
  • テーブル間に制約がある場合、追加、削除、クエリの SQL ステートメントは単純になりますが、挿入などの悪影響が生じます。データベースの操作時に制約がチェックされます (ただし、制約は手動で無視できます)。これは、データベース層にビジネス ロジックを書き込むことと同等であり、保守が不便です。

テーブル フィールド構造を最適化する

データベース内の整数で表現できるデータには文字列型を使用しないでください。varchar## を使用する必要がありますか? # または

char

フィールドの可能な値によって異なります。 データベース内に大量のデータがある場合、この種の最適化は実現できないことが多いため、データベース設計の前に最適化を設計することをお勧めします。

可能な値が非常に限られている列の場合は、

VARCHAR

の代わりに
    tinyint
  • を使用します。たとえば、モバイル デバイスを記録する場合、プラットフォームの場合、値は android、ios の 2 つだけです。android を表すには 0 を使用し、ios を表すには 1 を使用できます。この列はコメント化する必要があります
      ENUM
    • を使用しないのはなぜですか?
    • ENUM
    • 拡張の難しさ。たとえば、後でモバイル プラットフォームに ipad が追加されましたが、これは混乱を招くでしょうが、tinyint は単に 2 を追加するだけであり、 ENUM はコード内で扱うのが非常に奇妙で、整数として扱われるか文字列として扱われるかは言語によって異なります。 このメソッドでは、各値の意味をデータベース コメントまたはコードに記述する必要があります。
    • これらの固定長文字列には、
    • char を使用できます。
    (郵便番号など) は常に 5 桁です
  • 長さが不明な文字列の場合は、varchar
  • を使用し、bigint## を乱用しないでください。 #、レコードなど 記事数テーブルの id
  • フィールドには
  • int を使用し、上限は 21 億記事で十分です。データベース パラダイムを適切に打ち破り、クエリを回避するために冗長フィールドを追加します。テーブル接続 をクエリする場合、int 型は
  • varchar
  • よりも高速である必要があります。整数の比較は基になる演算子を直接呼び出すことで実現できますが、文字列型の比較は文字ごとに行われます。
固定長データクエリは、固定長データとデータ間のオフセットが固定されており、次のデータのオフセットを計算するのが簡単であるため、可変長データクエリよりも高速です。可変長データの場合、次のデータのオフセットをクエリするには、さらに 1 つの手順が必要です。しかし。固定長データは、より多くのストレージ領域を浪費する可能性があります。

大規模なテーブルの分割

データ量が近い将来 500 万を超える可能性があるテーブルや、急速に増加するテーブルの場合は、必ず事前にテーブルを垂直または水平に分割してください。ボリュームが 100 万を超えると、クエリ速度が大幅に低下します。

データベース設計の初期段階でサブデータベースとサブテーブルの計画を最終決定するようにしてください。そうしないと、コードが大幅に複雑になり、後で変更することが困難になります。

垂直テーブル パーティショニングは日付などの外部変数に基づき、水平テーブル パーティショニングはテーブル内の特定のフィールドの関係に基づき、ハッシュ マッピングを使用してテーブルを均等な部分に分割します。

サブデータベースとテーブルサブデータベースの前提条件は、クエリステートメントを実行する前に、クエリ対象のデータがどのサブデータベースとどのサブテーブルに分類されるかをすでに知っていることです。

クエリ ステートメントの最適化

これは、多くのシステム データベースのボトルネックの原因となります。

  • 単純なクエリを使用し、テーブル リンクの使用を避けてください。
  • フル テーブル スキャンを回避するようにしてください。フル テーブル スキャンを引き起こすステートメントには次のものがありますが、これらに限定されません:
    • where 句の条件は常に true または空です
    • Use LIKE
    • 不等号演算子 (<>, !=)
    • を使用しますis null
    • を含む列をクエリする インデックス以外の列で or
  • を使用して複数の条件でクエリを実行する場合、単純なクエリ条件またはインデックス列クエリを先頭に置いてください。
  • クエリを実行する必要がある列を指定してください。select を使用するのを怠らないでください。*
    • 指定しない場合は、一方で、冗長なデータが返され、帯域幅などを占有します。
    • 一方、MySQL がクエリを実行するとき、フィールドがない場合は、最初にテーブル構造内のフィールドをクエリします。 .
  • 大文字のクエリ キーワードは小文字のクエリ キーワードよりも若干高速です
  • サブクエリを使用すると一時テーブルが作成され、リンク (JOIN) やユニオン (UNION) よりも若干遅くなります。 )
  • インデックス フィールドでクエリを実行する場合は、クエリ結果をキャッシュするのに不都合なため、データベース関数を使用しないようにしてください。
  • データが 1 行しかない場合は、LIMIT 1 を使用してください。データが多すぎるため、LIMIT を適切に設定してページング クエリを実行してください。
  • #ORDER BY RAND() は絶対に使用しないでください。パフォーマンスが非常に低くなります。

構成情報などの一部の一般的に使用されるデータについては、キャッシュに配置できます。
  • データベースのテーブル構造はローカルにキャッシュできます。
  • キャッシュされたデータはタイムリーな更新に注意し、有効期間を設定する必要があります。
  • #キャッシュを増やすとシステムの複雑さが確実に増すため、トレードオフに必ず注意してください
データ テーブルの構造を確認する

推奨学習: 「mysql ビデオ チュートリアル

以上がMySQL 最適化の最も基本的な操作を要約します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

phpmyadminを開く方法 phpmyadminを開く方法 Apr 10, 2025 pm 10:51 PM

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

MySQLの場所:データベースとプログラミング MySQLの場所:データベースとプログラミング Apr 13, 2025 am 12:18 AM

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

なぜMySQLを使用するのですか?利点と利点 なぜMySQLを使用するのですか?利点と利点 Apr 12, 2025 am 12:17 AM

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

Apacheのデータベースに接続する方法 Apacheのデータベースに接続する方法 Apr 13, 2025 pm 01:03 PM

Apacheはデータベースに接続するには、次の手順が必要です。データベースドライバーをインストールします。 web.xmlファイルを構成して、接続プールを作成します。 JDBCデータソースを作成し、接続設定を指定します。 JDBC APIを使用して、接続の取得、ステートメントの作成、バインディングパラメーター、クエリまたは更新の実行、結果の処理など、Javaコードのデータベースにアクセスします。

DockerによるMySQLを開始する方法 DockerによるMySQLを開始する方法 Apr 15, 2025 pm 12:09 PM

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

Centosはmysqlをインストールします Centosはmysqlをインストールします Apr 14, 2025 pm 08:09 PM

CentOSにMySQLをインストールするには、次の手順が含まれます。適切なMySQL Yumソースの追加。 yumを実行して、mysql-serverコマンドをインストールして、mysqlサーバーをインストールします。ルートユーザーパスワードの設定など、MySQL_SECURE_INSTALLATIONコマンドを使用して、セキュリティ設定を作成します。必要に応じてMySQL構成ファイルをカスタマイズします。 MySQLパラメーターを調整し、パフォーマンスのためにデータベースを最適化します。

MySQLをCentos7にインストールする方法 MySQLをCentos7にインストールする方法 Apr 14, 2025 pm 08:30 PM

MySQLをエレガントにインストールするための鍵は、公式のMySQLリポジトリを追加することです。特定の手順は次のとおりです。MYSQLの公式GPGキーをダウンロードして、フィッシング攻撃を防ぎます。 mysqlリポジトリファイルを追加:rpm -uvh https://dev.mysql.com/get/mysql80-community-rease-el7-3.noarch.rpm update yumリポジトリキャッシュ:yumアップデートインストールmysql:yumインストールmysql-server startup mysql sportin

See all articles