ホームページ >データベース >mysql チュートリアル >MySql の制約とインデックス: データベースを効率的に作成する方法

MySql の制約とインデックス: データベースを効率的に作成する方法

PHPz
PHPzオリジナル
2023-06-16 09:09:371570ブラウズ

情報時代の発展に伴い、データ管理の重要性がますます高まっており、データベースは最も基本的なデータ管理ツールの 1 つです。データベースは、大量の情報の保存、情報の素早い検索、データの一貫性の確保が必要な分野で優れたパフォーマンスを発揮します。データベースの作成プロセスにおいて、その構造とパフォーマンスの設計は非常に重要なステップです。この記事では、データベース作成時に MySql の制約とインデックスを使用してデータの品質とパフォーマンスを向上させる方法を紹介します。

MySql の制約

MySql の制約とは、データベース内のデータを制限し、挿入または更新時にデータが指定された要件を確実に満たすようにするルールを指します。 MySql でサポートされる制約タイプには、主キー制約、一意制約、外部キー制約、非 null 制約、デフォルト値制約などが含まれます。以下に 1 つずつ紹介します。

  1. 主キー制約

主キー制約は、データ レコードを一意に識別するテーブル内の列です。主キー列の値は一意である必要があり、NULL にすることはできません。主キー制約は、テーブルの定義時に宣言されます。テーブルの作成時に個別に宣言することも、後で ALTER TABLE ステートメントを使用して追加することもできます。例:

CREATE TABLEemployee (

id INT PRIMARY KEY,
name VARCHAR(50),
age INT

);

このテーブルの ID 列は主キー制約です。つまり、各データ レコードの ID 値が一意である必要があり、null にすることはできません。

  1. 一意制約

一意制約では、列の値が一意である必要がありますが、NULL 値も許可されます。テーブルには複数の一意制約列を含めることができ、これらは主キー制約と同様に使用されます。例:

CREATE TABLEemployee (

id INT,
email VARCHAR(50) UNIQUE,
name VARCHAR(50),
age INT

);

このテーブルでは、電子メール列が唯一の制約です。つまり、電子メールの値は一意である必要があります。ただし、空にすることもできます。

  1. 外部キー制約

外部キー制約は、テーブル内のデータに正しい関係があることを保証するために使用されます。外部キー制約は、値が別のテーブルの主キーまたは一意制約列の値と一致する必要がある 1 つ以上の列のリストです。例:

CREATE TABLEemployee (

id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
department_id INT,
FOREIGN KEY (department_id) REFERENCES department(id)

);

このテーブルでは、Department_id 列が外部キー制約として定義されており、REFERENCES キーワードは外部キー制約として使用されます。他のテーブルを参照する 主キーまたは一意制約列。

  1. 非 null 制約

非 null 制約は、列の値が NULL でないことを保証するために使用されます。例:

CREATE TABLEemployee (

id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT

);

このテーブルでは、name 列に NULL 値を使用できません。

  1. デフォルト値制約

デフォルト値制約は、新しいデータが挿入されるときに、列の値が指定されていない場合にデフォルト値が確実に使用されるようにするために使用されます。使用済み。例:

CREATE TABLEemployee (

id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
hire_date DATE DEFAULT '2020-01-01'

);

このテーブルでは、hire_date 列でデフォルト値 2020 年 1 月 1 日が定義されています。この列に値が指定されていない場合は、デフォルト値が自動的に使用されます。

MySql のインデックス

MySql のインデックスは、テーブル内のデータをすばやく検索してアクセスするためにテーブル内に作成されるデータ構造です。 MySql でサポートされているインデックス タイプには、B ツリー インデックス、フルテキスト インデックス、ハッシュ インデックスなどが含まれます。以下に 1 つずつ紹介します。

  1. B ツリー インデックス

B ツリー インデックスは、データ レコードを迅速に検索できる最も一般的に使用されるインデックス タイプです。 B ツリー インデックスには、主キー インデックス、一意インデックス、通常のインデックスがあり、同じ方法で作成されます。

主キー インデックスとユニーク インデックスは、単一の列または複数の列に構築されるインデックスです。主キー インデックスは、テーブル内の主キー列のインデックスです。ユニーク インデックスは、一意の値列のインデックスです。インデックス列が必要です。値は一意です。

通常のインデックスには一意性の要件がなく、重複した値がインデックス列に表示されることが許可されます。例:

CREATE TABLEemployee (

id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
INDEX name_index (name)

);

このテーブルでは、名前の検索を高速化するために、name_index 列が通常のインデックス列として定義されています。カラム。 。

  1. 全文インデックス

全文インデックスとは、テキストを含む列を検索するためのインデックスで、キーワードを含むテキストデータを素早く見つけることができます。例:

CREATE TABLE 記事 (

id INT PRIMARY KEY,
title VARCHAR(50),
content TEXT,
FULLTEXT search_index (title, content)

);

このテーブルでは、search_index 列がフルテキスト インデックス列として定義されており、検索を高速化するために使用されます。タイトルとコンテンツの列を検索します。

  1. ハッシュ インデックス

ハッシュ インデックスは、データ レコードを迅速に見つけることができるハッシュ アルゴリズムに基づくインデックスです。ハッシュ インデックスは等価クエリにのみ使用でき、範囲クエリや並べ替えには使用できません。例:

CREATE TABLE Student (

id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
INDEX age_index (age) USING HASH

);

このテーブルでは、age_index 列がハッシュ インデックス列として定義されており、age 列の高速化に使用されます。探す。

結論

データベースを作成する場合、制約とインデックスは非常に重要な要素であり、これらを適切に使用することでデータベースのデータ品質とパフォーマンスを向上させることができます。制約とインデックスを使用する場合、最良の結果を得るには、データの特性とニーズに応じて適切なタイプを選択する必要があります。

以上がMySql の制約とインデックス: データベースを効率的に作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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