13章インデックスと制約

本書の焦点はプログラミングテクニックにあるため、ここまでの12の章では、強力なselect文、insert文、update文、delete文を組み立てるのに利用できるSQL言語の要素を集中的に取り上げてきました。しかし、コーディングに「間接的な」影響を与えるデータベースの機能は他にもあります。本章では、そのうちの2つであるインデックスと制約を取り上げます。

13.1 インデックス

テーブルに行を挿入する際、データベースサーバーはそのデータをテーブル内の特定の場所に配置するわけではありません。たとえば、customerテーブルに行を追加する場合、データベースサーバーはその行をcustomer_id列の数値の順に配置するわけでも、last_name列のアルファベット順に配置するわけでもありません。データベースサーバーは単に、ファイル内の次に利用できる場所にデータを配置するだけです(各テーブルの空き領域のリストはデータベースサーバーが管理しています)。このため、customerテーブルに対してクエリが実行されたら、データベースサーバーはテーブルの行を1つ残らず調べなければなりません。たとえば、次のクエリを実行したとしましょう。

mysql> SELECT first_name, last_name
    -> FROM customer
    -> WHERE last_name LIKE 'Y%'; +------------+-----------+ | first_name | last_name | +------------+-----------+ | LUIS | YANEZ | | MARVIN | YEE | | CYNTHIA | YOUNG | +------------+-----------+ ...

Get 初めてのSQL 第3版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.