ホームページ  >  記事  >  データベース  >  MySQLがインデックスを作成する仕組みを詳しく解説(事例)

MySQLがインデックスを作成する仕組みを詳しく解説(事例)

coldplay.xixi
coldplay.xixi転載
2021-03-24 09:59:575430ブラウズ

MySQLがインデックスを作成する仕組みを詳しく解説(事例)

ケース: データベース Index_test を作成し、次のテーブルの構造に従って、index_test データベースに 2 つのデータ テーブル test_table1 と test_table2 を作成し、データ テーブルを完成させます。操作手順に沿って基本操作を行います。

(1) MySQL データベースにログインします。
(2) データベース Index_test を作成します。
(3) テーブル test_table1 を作成します。
(4) テーブル test_table2 を作成します。ストレージ エンジンは次のとおりです。 MyISAM
(5) alter table ステートメントを使用して、テーブル test_table2 の Birth フィールドに ComDateIdx という名前の共通インデックスを作成します。
(6) alter table ステートメントを使用して、テーブル test_table2 の id フィールドに UniqIdx2 という名前の一意のインデックスを追加します。テーブル test_table2 を作成し、降順に並べます
(7) create Index を使用して、名、ミドルネーム、姓の各フィールドに MultiColidx2 という名前の複合インデックスを作成します
(8) create Index を使用して、という名前のフルテキスト インデックスを作成しますタイトル フィールドの FTidx
(9) alter table ステートメントを使用して、テーブル test_table1
内の Uniqidx という名前の一意のインデックスを削除します。(10) drop Index ステートメントを使用して、テーブル test_table2## 内の MultiColidx2 という名前の結合インデックスを削除します。 #いくつかの注意点

(無料学習の推奨事項: mysql ビデオ チュートリアル)

##(1) MySQL データベースにログインします
C:\Users\Hudie>mysql -h localhost -u root -p
Enter password: *******
(2) データベースindex_testを作成します
mysql> create database index_test;Query OK, 1 row affected (0.06 sec)mysql> use index_test;Database changed
(3) テーブルtest_table1
mysql> create table test_table1    -> (
    -> id int not null primary key auto_increment,
    -> name char(100) not null,
    -> address char(100) not null,
    -> description char(100) not null,
    -> unique index uniqidx(id),
    -> index MultiColidx(name(20),address(30) ),
    -> index Comidx(description(30))
    -> );Query OK, 0 rows affected (0.11 sec)mysql> show create table test_table1 \G*************************** 1. row ***************************
       Table: test_table1Create Table: CREATE TABLE `test_table1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(100) NOT NULL,
  `address` char(100) NOT NULL,
  `description` char(100) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniqidx` (`id`),
  KEY `MultiColidx` (`name`(20),`address`(30)),
  KEY `Comidx` (`description`(30))) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.06 sec)
を作成します。 test_table テーブルに 3 つのインデックスが正常に作成され、それぞれ id フィールドに uniqidx という名前が付けられました。 name および address フィールドには一意のインデックス、description フィールドには長さ 30 の通常のインデックスが付けられました。

(4) テーブル test_table2 を作成します。ストレージ エンジンは MyISAM

mysql> create table test_table2    -> (
    -> id int not null primary key auto_increment,
    -> firstname char(100) not null,
    -> middlename char(100) not null,
    -> lastname char(100) not null,
    -> birth date not null,
    -> title char(100) null
    -> )ENGINE=MyISAM;Query OK, 0 rows affected (0.07 sec)
(5) alter table ステートメントを使用して、テーブル test_table2
の Birth フィールドに ComDateIdx という名前の共通インデックスを作成します。
mysql> alter table test_table2 add index ComDateidx(birth);Query OK, 0 rows affected (0.13 sec)Records: 0  Duplicates: 0  Warnings: 0
(6) alter table ステートメントを使用して、テーブル test_table2 の id フィールドに Uniqidx2 という名前の一意のインデックスを追加します。
mysql> alter table test_table2 add unique index Uniqidx(id);Query OK, 0 rows affected (0.11 sec)Records: 0  Duplicates: 0  Warnings: 0
(7) create Index を使用して、名とミドルネームに MultiColidx2 という名前の組み合わせを作成します。 Index
mysql>  create index MultiColidx2 on test_table2(firstname,middlename);Query OK, 0 rows affected (0.12 sec)Records: 0  Duplicates: 0  Warnings: 0
(8) createindex を使用して、タイトル フィールドに FTidx という名前のフルテキスト インデックスを作成します
mysql> create fulltext index ftidx on test_table2(title);Query OK, 0 rows affected (0.13 sec)Records: 0  Duplicates: 0  Warnings: 0
(9) alter table ステートメントを使用して、という名前の一意のインデックスを削除しますテーブル test_table1
mysql> alter table test_table1 drop index uniqidx;Query OK, 0 rows affected (0.09 sec)Records: 0  Duplicates: 0  Warnings: 0
(10) テーブル test_table1# の Uniqidx ##
mysql> drop index MultiColidx2 on test_table2;Query OK, 0 rows affected (0.12 sec)Records: 0  Duplicates: 0  Warnings: 0
(10) テーブル test_table2 の MultiColidx2 という名前の結合インデックスを削除するには、drop Index ステートメントを使用します
rrreee
いくつかの注意点:
1インデックスはデータベースのパフォーマンスにとって非常に重要ですが、どのように使用すればよいでしょうか?

    インデックス列の数が少ない場合、必要なディスク容量とメンテナンスのオーバーヘッドが少なくなります。
  • 大きなテーブルに複数の結合インデックスを作成すると、インデックス ファイルも急速に拡張されます。さらに、より多くのインデックスがあり、より多くのクエリをカバーできます。
  • データベース スキーマやアプリケーション設計に影響を与えずに、インデックスを追加、削除、または変更してみます。
2. 文字列型フィールドのインデックスには短いインデックス

    を使用するようにしてください。可能であれば、プレフィックスの長さを指定する必要があります。たとえば、char(255) 列がある場合、ほとんどの値が最初の 10 文字または 30 文字内で一意であれば、列全体にインデックスを付ける必要はありません。
  • 短いインデックスはクエリ速度を向上させるだけでなく、ディスク領域を節約し、I/O 操作を減らすこともできます。
#関連する無料学習の推奨事項:

mysql データベース(ビデオ)

以上がMySQLがインデックスを作成する仕組みを詳しく解説(事例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。