ホームページ バックエンド開発 PHPチュートリアル PHP 動的 Web サイトの高速化 MySQL インデックス分析と最適化について_PHP チュートリアル

PHP 動的 Web サイトの高速化 MySQL インデックス分析と最適化について_PHP チュートリアル

Jul 21, 2016 pm 02:56 PM
mysql php 主要 最適化 について 分析する 加速する 動的 どうやって 索引 ネット Webサイト

この記事では主に、MySQL インデックス分析と動的 Web サイトの最適化を高速化する方法について説明します。

1. インデックスとは何ですか?

インデックスは、特定の値を持つレコードをすばやく検索するために使用されます。すべての MySQL インデックスは B ツリーの形式で保存されます。インデックスがない場合、クエリを実行するときに、MySQL は要件を満たすレコードが見つかるまで、テーブル全体のすべてのレコードを最初のレコードからスキャンする必要があります。テーブル内のレコードの数が増えるほど、この操作のコストも高くなります。検索条件として使用されるカラムにインデックスが作成されている場合、MySQL はレコードをスキャンすることなく、目的のレコードの位置を迅速に取得できます。テーブルに 1000 レコードがある場合、インデックスを使用してレコードを検索すると、レコードを順次スキャンするよりも少なくとも 100 倍高速になります。

people というテーブルを作成するとします。

CREATE TABLE people ( peopleid SMALLINT NOT NULL、

名前 CHAR(50) NOT NULL );

次に、1000 の異なる名前の値を people テーブルに完全にランダムに挿入します。データ ファイル内では、名前列には明示的な順序がありません。 name カラムにインデックスを作成すると、MySQL はインデックス内の name カラムをソートし、インデックス内の各項目に対して、データ ファイル内の実際のレコードの場所への「ポインタ」を内部的に保存します。したがって、名前が「Mike」に等しいレコードの peopleid を見つけたい場合 (SQL コマンドは「SELECT peopleid FROM people WHERE name='Mike';」)、MySQL は「Mike」の値を見つけることができます。 name のインデックスに直接移動します。データ ファイル内の対応する行は、その行の peopleid (999) を正確に返します。このプロセス中、MySQL は 1 行を処理するだけで結果を返します。 「name」列にインデックスがない場合、MySQL はデータ ファイル内のすべてのレコード、つまり 1,000 レコードをスキャンします。明らかに、MySQL が処理する必要があるレコードの数が少ないほど、タスクをより速く完了できます。

2.インデックスの種類

MySQL は、選択できるさまざまなインデックス タイプを提供します:

通常のインデックス:

最も基本的なインデックスタイプであり、一意性などの制限はありません。通常のインデックスは次の方法で作成できます:

インデックスを作成します (例: CREATE INDEX ON tablename (列のリスト))。

ALTER TABLE tablename ADD INDEX [インデックス名] (列のリスト) などのテーブルを変更します。

CREATE TABLE tablename ([...], INDEX [インデックス名] (列のリスト)) のように、テーブルを作成するときにインデックスを指定します。

一意のインデックス:

この種のインデックスは基本的に前の「通常のインデックス」と同じですが、違いが 1 つあります。インデックス列内のすべての値は 1 回だけ出現でき、一意である必要があります。一意のインデックスは次の方法で作成できます:

インデックスを作成します (例: CREATE UNIQUE INDEX ON tablename (列のリスト))。

ALTER TABLE tablename ADD UNIQUE [インデックス名] (列のリスト) などのテーブルを変更します。

CREATE TABLE tablename ([...], UNIQUE [インデックス名] (列のリスト)) のように、テーブルを作成するときにインデックスを指定します。

主キー:

主キーは一意のインデックスですが、「PRIMARY KEY」として指定する必要があります。 AUTO_INCREMENT 型の列を扱ったことがある場合は、主キーなどの概念にすでに精通しているかもしれません。主キーは通常、テーブルの作成時に「CREATE TABLE テーブル名 ([...], PRIMARY KEY (列のリスト));」のように指定します。ただし、「ALTER TABLE tablename ADD PRIMARY KEY (list of columns);」のようにテーブルを変更して主キーを追加することもできます。各テーブルは主キーを 1 つだけ持つことができます。

全文インデックス:

MySQL は、バージョン 3.23.23 以降、全文インデックス作成と全文検索をサポートします。 MySQL では、フルテキスト インデックスのインデックス タイプは FULLTEXT です。フルテキスト インデックスは、VARCHAR 型または TEXT 型の列に作成できます。これは、CREATE TABLE コマンド、または ALTER TABLE または CREATE INDEX コマンドによって作成できます。大規模なデータ セットの場合、ALTER TABLE (または CREATE INDEX) コマンドを使用してフルテキスト インデックスを作成する方が、フルテキスト インデックスを使用して空のテーブルにレコードを挿入するよりも高速です。

http://www.bkjia.com/PHPjc/364147.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/364147.html技術記事この記事では主に、MySQL インデックス分析と動的 Web サイトの最適化を高速化する方法について説明します。 1. インデックスとは何ですか? インデックスは、特定の値を持つレコードをすばやく検索するために使用されます。すべての MySQL インデックスは...です。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

MySQLユーザーとデータベースの関係 MySQLユーザーとデータベースの関係 Apr 08, 2025 pm 07:15 PM

MySQLデータベースでは、ユーザーとデータベースの関係は、アクセス許可と表によって定義されます。ユーザーには、データベースにアクセスするためのユーザー名とパスワードがあります。許可は助成金コマンドを通じて付与され、テーブルはCreate Tableコマンドによって作成されます。ユーザーとデータベースの関係を確立するには、データベースを作成し、ユーザーを作成してから許可を付与する必要があります。

RDS MySQL Redshift Zero ETLとの統合 RDS MySQL Redshift Zero ETLとの統合 Apr 08, 2025 pm 07:06 PM

データ統合の簡素化:AmazonrdsmysqlとRedshiftのゼロETL統合効率的なデータ統合は、データ駆動型組織の中心にあります。従来のETL(抽出、変換、負荷)プロセスは、特にデータベース(AmazonrdsmysQlなど)をデータウェアハウス(Redshiftなど)と統合する場合、複雑で時間がかかります。ただし、AWSは、この状況を完全に変えたゼロETL統合ソリューションを提供し、RDSMYSQLからRedshiftへのデータ移行のための簡略化されたほぼリアルタイムソリューションを提供します。この記事では、RDSMysQl Zero ETLのRedshiftとの統合に飛び込み、それがどのように機能するか、それがデータエンジニアと開発者にもたらす利点を説明します。

MySQL:初心者向けのデータ管理の容易さ MySQL:初心者向けのデータ管理の容易さ Apr 09, 2025 am 12:07 AM

MySQLは、インストールが簡単で、強力で管理しやすいため、初心者に適しています。 1.さまざまなオペレーティングシステムに適した、単純なインストールと構成。 2。データベースとテーブルの作成、挿入、クエリ、更新、削除などの基本操作をサポートします。 3.参加オペレーションやサブクエリなどの高度な機能を提供します。 4.インデックス、クエリの最適化、テーブルパーティション化により、パフォーマンスを改善できます。 5。データのセキュリティと一貫性を確保するために、バックアップ、リカバリ、セキュリティ対策をサポートします。

MySQLのユーザー名とパスワードを入力する方法 MySQLのユーザー名とパスワードを入力する方法 Apr 08, 2025 pm 07:09 PM

MySQLのユーザー名とパスワードを入力するには:1。ユーザー名とパスワードを決定します。 2。データベースに接続します。 3.ユーザー名とパスワードを使用して、クエリとコマンドを実行します。

MySQLのクエリ最適化は、特に大規模なデータセットを扱う場合、データベースのパフォーマンスを改善するために不可欠です MySQLのクエリ最適化は、特に大規模なデータセットを扱う場合、データベースのパフォーマンスを改善するために不可欠です Apr 08, 2025 pm 07:12 PM

1.正しいインデックスを使用して、データの量を削減してデータ検索をスピードアップしました。テーブルの列を複数回検索する場合は、その列のインデックスを作成します。あなたまたはあなたのアプリが基準に従って複数の列からのデータが必要な場合、複合インデックス2を作成します2。選択した列のみを避けます。必要な列のすべてを選択すると、より多くのサーバーメモリを使用する場合にのみサーバーが遅くなり、たとえばテーブルにはcreated_atやupdated_atやupdated_atなどの列が含まれます。

NAVICATでデータベースパスワードを取得できますか? NAVICATでデータベースパスワードを取得できますか? Apr 08, 2025 pm 09:51 PM

NAVICAT自体はデータベースパスワードを保存せず、暗号化されたパスワードのみを取得できます。解決策:1。パスワードマネージャーを確認します。 2。NAVICATの「パスワードを記憶する」機能を確認します。 3.データベースパスワードをリセットします。 4.データベース管理者に連絡してください。

mysqlを表示する方法 mysqlを表示する方法 Apr 08, 2025 pm 07:21 PM

次のコマンドでmysqlデータベースを表示します。サーバーに接続します:mysql -u username -pパスワードrun showデータベース。すべての既存のデータベースを取得するコマンド[データベース]を選択します。データベース名を使用します。テーブルを表示:表を表示します。テーブル構造を表示:テーブル名を説明してください。データを表示:[テーブル名]から[ *]を選択します。

マスターSQL制限条項:クエリの行数を制御する マスターSQL制限条項:クエリの行数を制御する Apr 08, 2025 pm 07:00 PM

sqllimit句:クエリ結果の行数を制御します。 SQLの制限条項は、クエリによって返される行数を制限するために使用されます。これは、大規模なデータセット、パジネートされたディスプレイ、テストデータを処理する場合に非常に便利であり、クエリ効率を効果的に改善することができます。構文の基本的な構文:SelectColumn1、column2、... FromTable_nameLimitnumber_of_rows; number_of_rows:返された行の数を指定します。オフセットの構文:SelectColumn1、column2、... FromTable_nameLimitoffset、number_of_rows; offset:skip

See all articles