目次
#インデックス タイプ" >#インデックス タイプ
通常のインデックスを例として、テーブルの作成時にインデックスを作成します" >インデックスの作成構文通常のインデックスを例として、テーブルの作成時にインデックスを作成します
特に注意する必要のない、最も基本的なインデックス作成方法です。 " >通常のインデックス特に注意する必要のない、最も基本的なインデックス作成方法です。
一意のインデックス一意のインデックスでは、インデックス列のデータは一意であり、重複する値は出現できません。コンテンツを制限するために使用され、null 値を許可します。 " >一意のインデックス一意のインデックスでは、インデックス列のデータは一意であり、重複する値は出現できません。コンテンツを制限するために使用され、null 値を許可します。
主キーインデックス主キーインデックスは主キーを設定するもので、各テーブルには主キーを 1 つだけ持つことができます。主キー列の値は一意である必要があり、NULL 値は許可されません。 " >主キーインデックス主キーインデックスは主キーを設定するもので、各テーブルには主キーを 1 つだけ持つことができます。主キー列の値は一意である必要があり、NULL 値は許可されません。
複合インデックス 複合インデックスには 2 つ以上の列を含めることができます。 " >複合インデックス 複合インデックスには 2 つ以上の列を含めることができます。
ホームページ データベース mysql チュートリアル mysqlインデックスとはどういう意味ですか

mysqlインデックスとはどういう意味ですか

Apr 13, 2023 pm 04:13 PM
mysql

mysql では、インデックスは「インデックス」を指します。これは、データ テーブル内の 1 つ以上の列で構成される特別なデータベース構造です。データ テーブル内の特定の列をすばやくクエリするために使用できます。値レコード。インデックスを介してデータをクエリする場合、レコードのすべての情報を読み取る必要はなく、インデックス列をクエリするだけで済みます。そうでない場合、データベース システムは照合のために各レコードのすべての情報を読み取ります。したがって、インデックスを使用すると、データベースのクエリ速度が大幅に向上し、データベース システムのパフォーマンスが効果的に向上します。

mysqlインデックスとはどういう意味ですか

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

mysql では、インデックスは「インデックス」を指します。これは、データ テーブル内の 1 つ以上の列で構成される特別なデータベース構造です。データ テーブル内の特定の列をすばやくクエリするために使用できます。値レコード。

インデックスを使用してデータをクエリする場合、レコード内のすべての情報を読み取る必要はなく、インデックス列をクエリするだけで済みます。それ以外の場合、データベース システムは照合のために各レコードのすべての情報を読み取ります。

この索引は、新華辞典の発音順序と比較できます。たとえば、「く」という単語を調べたい場合、発音順序を使用しない場合、400 ページの辞書からページごとに検索する必要があります。ただし、ピンインを抽出して発音シーケンスを作成する場合は、10 ページを超える発音表から直接検索するだけで済みます。これにより時間を大幅に節約できます。

したがって、インデックスを使用すると、データベースのクエリ速度が大幅に向上し、データベース システムのパフォーマンスが効果的に向上します。

インデックスを使用する理由

インデックスとは、列の値とレコード行の間の関係を、ある基準に基づいて特定の順序で確立したものです。対応テーブルは基本的に、インデックス列の列値と元のテーブルのレコード行の間の 1 対 1 の対応を記述する順序付けされたテーブルです。

インデックスは MySQL の非常に重要なデータベース オブジェクトであり、データベース パフォーマンス チューニング テクノロジの基礎であり、データの高速な取得を実現するためによく使用されます。

MySQL では、通常、データベース テーブルの行データにアクセスする方法が 2 つあります。

1) シーケンシャル アクセス

シーケンシャル アクセスは、データベース テーブルに対してフル テーブル スキャンを実行することです。テーブル。順序なし行データの条件を満たすターゲット データが見つかるまで、最初から最後まで 1 行ずつ調べます。

シーケンシャル アクセスは実装が比較的簡単ですが、テーブル内に大量のデータがある場合、効率は非常に低くなります。例えば、数千万のデータの中から少量のデータを検索する場合、シーケンシャルアクセスを行うと全データを横断することになり、時間がかかり、データベースの処理性能に影響を与えるのは明らかです。

2) インデックス アクセス

インデックス アクセスは、インデックスを走査してテーブル内のレコード行に直接アクセスする方法です。

この方法を使用する前提は、テーブルにインデックスを作成することです。列にインデックスを作成した後、データを検索するときに、テーブルのインデックスに基づいて、対応するレコード行の位置を直接見つけることができます。列をクリックすると、データをすばやく見つけることができます。インデックスは、指定された列のデータ値へのポインターを格納し、指定された並べ替え順序に従ってこれらのポインターを並べ替えます。

たとえば、学生基本情報テーブル tb_students で、student_id に基づいてインデックスが設定されている場合、システムはインデックス列から実際のレコードまでのマッピングテーブルを作成します。ユーザーが Student_id 12022 のデータを検索する必要がある場合、システムはまず Student_id インデックスでレコードを検索し、次にマッピング テーブルを通じてデータ行を直接検索し、データ行を返します。一般に、インデックスのスキャン速度は実際のデータ行のスキャン速度よりもはるかに速いため、インデックスを使用するとデータベースの効率が大幅に向上します。

つまり、インデックスを使用せずに、MySQL は最初のレコードから始めて、関連する行が見つかるまでテーブル全体を読み取る必要があります。テーブルが大きくなるほど、データのクエリにかかる時間が長くなります。テーブル内のクエリ対象のカラムにインデックスがある場合、MySQL はすべてのデータを確認することなく、データ ファイルを検索する場所にすぐにアクセスできるため、時間を大幅に節約できます。

インデックスの利点と欠点

インデックスには明らかな利点と避けられない欠点があります。

利点

インデックスの利点は次のとおりです。

  • 一意のインデックスを作成することにより、データの各行がデータベーステーブルが一意であることが保証されます。

  • すべての MySQL 列タイプにインデックスを設定できます。

  • を使用すると、データ クエリを大幅に高速化できます。これがインデックスを使用する主な理由です。

  • データの参照整合性を実現するという点で、テーブル間の接続を高速化できます。

  • #データ クエリにグループ化句と並べ替え句を使用すると、クエリ内のグループ化と並べ替えの時間を大幅に短縮することもできます

# #欠点

インデックスを増やすと、主に次のような多くの欠点もあります。

    インデックス グループの作成と維持に時間がかかり、データ量が増えるため、時間がかかります。増えると時間がかかります。
  • インデックスはディスク領域を占有する必要があります。データ テーブルが占有するデータ領域に加えて、各インデックスは一定量の物理領域も占有します。多数のインデックスがある場合、インデックス ファイルはデータ ファイルよりも早く最大ファイル サイズに達する可能性があります。
  • テーブル内のデータが追加、削除、変更されると、インデックスも動的に維持する必要があるため、データのメンテナンス速度が低下します。

インデックスを使用する場合は、インデックスの長所と短所を考慮する必要があります。

インデックスを使用するとクエリの速度が向上しますが、レコードの挿入速度に影響します。インデックス付きテーブルにレコードを挿入するとき、データベース システムはインデックスに従って並べ替えるため、レコードの挿入速度が低下します。大量のレコードを挿入する場合、速度への影響はより顕著になります。この場合、最初にテーブル内のインデックスを削除し、次にデータを挿入し、挿入が完了した後にインデックスを作成するのが最善の方法です。

インデックス設計の原則

1) インデックスはディスク領域も占有するため、多いほど良いことに注意してください。

2) インデックスが多すぎると、INSERT、DELETE、UPDATE などのステートメントの実行効率に影響します。

3) データが少なすぎる場合、インデックスを作成することはお勧めできません。

4) 一意制約の場合は、対応する一意のインデックスを使用する必要があります。

5) 識別性の低いフィールドにはインデックスを付けないように注意してください。たとえば、列挙型の性別フィールドには男性と女性のみが含まれるため、最適化効果は得られません。

6) テーブル作成時にインデックスを作成することをお勧めします。テーブルに多数のレコードがある場合、列がインデックスとして作成された後、テーブル内のすべてのレコードが変更されます。

7) 頻繁にクエリされないフィールドにインデックスを作成することはお勧めできません。

#インデックス タイプ

タイプ関数##通常のインデックス一意のインデックス主キー インデックス複合インデックスさまざまな環境に応じて、対応するインデックス タイプを選択するだけです。
基本的なインデックス作成方法、特別な手順なし
データは一意であり、null が許可されます
テーブルには主キーが 1 つだけあり、データは一意であり、NULL は許可されません
2 つ以上の列を含めることができるインデックス メソッド

インデックスの作成構文通常のインデックスを例として、テーブルの作成時にインデックスを作成します

create table 表名(
 字段定义…
 index 索引名称(字段));
ログイン後にコピー

通常のインデックスを例として取り上げます, テーブルを変更します。インデックス

alter table 表名 add index 索引名称(字段);
ログイン後にコピー

については、インデックスの代わりにキーを使用でき、インデックス名は省略できます。インデックス名を追加しない場合は、デフォルトでフィールド名がインデックス名として使用されます。

通常のインデックス特に注意する必要のない、最も基本的なインデックス作成方法です。

テーブルを作成し、通常のインデックスを作成します。インデックス列は id

mysql> create table test1(id int,name varchar(5),age tinyint,index index_id(id));
ログイン後にコピー

です。テーブルの構造を表示します。キーの下の MUL は通常のインデックスを表します

mysql> desc test1;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id    | int(11)    | YES  | MUL | NULL    |       |
| name  | varchar(5) | YES  |     | NULL    |       |
| age   | tinyint(4) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
ログイン後にコピー

インデックス情報を表示します

mysql> show index from test1\G
*************************** 1. row ***************************
        Table: test1
   Non_unique: 1
     Key_name: index_id		
 Seq_in_index: 1
  Column_name: id
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null: YES
   Index_type: BTREE
      Comment:
Index_comment:
      Visible: YES
   Expression: NULL
1 row in set (0.00 sec)
ログイン後にコピー

テスト用にテーブルにデータを追加します。

mysql> insert into test1 values(1,'张三',21),(2,'李四',22),(3,'王五',23),(4,'赵六',24);
ログイン後にコピー

最初にインデックスを経由せずに、

explain

を通じて SQL クエリ ステートメントの実行をシミュレートし、という名前のレコードをクエリします。趙劉。

mysql> explain select * from test1 where name='赵六'\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: test1
   partitions: NULL
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 4
     filtered: 25.00
        Extra: Using where
1 row in set, 1 warning (0.00 sec)
ログイン後にコピー
type:ALL 項目はテーブル全体のスキャンを示し、行数: 4 は行数を示します。 Zhao Liu はテーブルの最後のレコードであるため、クエリはテーブル全体をスキャンします。

次に、インデックス列 ID を使用して Zhao Liu という名前のフィールドをクエリします。

mysql> explain select * from test1 where id=4\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: test1
   partitions: NULL
         type: ref
possible_keys: index_id
          key: index_id
      key_len: 5
          ref: const
         rows: 1
     filtered: 100.00
        Extra: NULL
1 row in set, 1 warning (0.00 sec)
ログイン後にコピー

rows: 1 は、1 行のみが取得され、レコードが見つかったことを意味します。判定は明らかです。

一意のインデックス一意のインデックスでは、インデックス列のデータは一意であり、重複する値は出現できません。コンテンツを制限するために使用され、null 値を許可します。

構文:

create table 表名(
 字段定义…
 unique key 索引名(字段名));
ログイン後にコピー

一意のインデックスは、値を繰り返すことができないフィールド、ID 番号、携帯電話番号などでよく使用されます。

テーブルを作成し、一意のインデックスを作成します。インデックス列は携帯電話番号です。

mysql> create table test2(id int,name varchar(5),phone int,unique key unique_key_phone(phone));
ログイン後にコピー

テーブル構造を表示します。キーの下の UNI は一意のインデックスとして表されます

mysql> desc test2;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id    | int(11)    | YES  |     | NULL    |       |
| name  | varchar(5) | YES  |     | NULL    |       |
| phone | int(11)    | YES  | UNI | NULL    |       |
+-------+------------+------+-----+---------+-------+
ログイン後にコピー

データを挿入して機能をテストします

mysql> insert into test2 values(1,'张三',1111111111);
mysql> insert into test2 values(2,'李四',null);	#可以为null
mysql> insert into test2 values(3,'王五',1111111111);	#值必须唯一
ERROR 1062 (23000): Duplicate entry '1111111111' for key 'unique_key_phone'
ログイン後にコピー

テーブル データを表示

mysql> select * from test2;
+------+--------+------------+
| id   | name   | phone      |
+------+--------+------------+
|    2 | 李四   |       NULL |
|    1 | 张三   | 1111111111 |
+------+--------+------------+
ログイン後にコピー

主キーインデックス主キーインデックスは主キーを設定するもので、各テーブルには主キーを 1 つだけ持つことができます。主キー列の値は一意である必要があり、NULL 値は許可されません。

構文:

create table テーブル名 (フィールド主キー);
または

create table テーブル名 (

フィールド定義) …

主キー インデックス名 (フィールド));

テーブルを作成し、それを主キー インデックスとして設定します。インデックス列は id

mysql> create table test3(id int primary key,name varchar(5),age tinyint);
ログイン後にコピー

です。テーブル構造を表示します。キー主キー インデックス列

mysql> desc test3;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id    | int(11)    | NO   | PRI | NULL    |       |
| name  | varchar(5) | YES  |     | NULL    |       |
| age   | tinyint(4) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
ログイン後にコピー

データとテスト機能の挿入

mysql> insert into test3 values(1,'张三',23);
mysql> insert into test3 values(null,'张三',23);	#不能为null
ERROR 1048 (23000): Column 'id' cannot be null
mysql> insert into test3 values(1,'张三',23);	#值不能重复
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
ログイン後にコピー

テーブル データの表示

mysql> select * from test3;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  1 | 张三   |   23 |
+----+--------+------+
ログイン後にコピー

複合インデックス 複合インデックスには 2 つ以上の列を含めることができます。

特別な構文はありません。テーブルの二重インデックスを作成できます。

テーブルを作成し、それを複合主キーとして設定します。インデックス列は id、name

mysql> create table test4 (id int,name varchar(5),age tinyint,primary key(id,name));
ログイン後にコピー
# です。 ##複合主キー特性と主キー いくつかの違いがありますが、反復しない必要があるのは 1 つのフィールドだけです。

mysql> insert into test4 values(1,'张三',21);
mysql> insert into test4 values(1,'李四',21);
mysql> insert into test4 values(1,'张三',21);	#主键列全重复
ERROR 1062 (23000): Duplicate entry '1-张三' for key 'PRIMARY'
ログイン後にコピー

テーブル データの表示

mysql> select * from test4;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  1 | 张三   |   21 |
|  1 | 李四   |   21 |
+----+--------+------+
ログイン後にコピー
[関連する推奨事項:

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衣類リムーバー

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 10, 2025 am 09:29 AM

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

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 12, 2025 am 12:17 AM

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

単一のスレッドレディスの使用方法 単一のスレッドレディスの使用方法 Apr 10, 2025 pm 07:12 PM

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

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

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

MySQLおよびSQL:開発者にとって不可欠なスキル MySQLおよびSQL:開発者にとって不可欠なスキル Apr 10, 2025 am 09:30 AM

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

SQLデータベースの構築方法 SQLデータベースの構築方法 Apr 09, 2025 pm 04:24 PM

SQLデータベースの構築には、DBMSの選択が必要です。 DBMSのインストール。データベースの作成。テーブルの作成;データの挿入;データの取得。データの更新。データの削除。ユーザーの管理。データベースのバックアップ。

See all articles