ray88’s diary

お仕事で困ったとき用の自分用の覚書

SQL指南書 補足 主キーとインデックス

インデックスとは?
インデックスは、データベースのテーブルの特定の列のデータを高速に検索・アクセスするためのデータ構造です。本の索引のように、特定の情報を素早く見つけるためのものと考えるとわかりやすいです。

主キーとインデックスの関係
テーブルに主キーを設定すると、その主キーの列に自動的にインデックスが作成されます。これにより、主キーの列を条件とした検索や結合が高速に行われます。

解説文の内容について
「せっかくitem_noで一位になっても、SH自身には主キーのインデックスが存在しないため、結合条件に利用することができない」という解説文は、以下の点を指摘しています。

SalesHistory テーブルには item_no が一位(一意)になるようなデータ構造になっています(各日の各商品は1回しか記録されません)。
しかし、SalesHistory の item_no には主キーが設定されていないため、インデックスが自動的に作成されていません。
そのため、Items テーブルと SalesHistory テーブルを item_no で結合する際、SalesHistory の item_no にインデックスがないため、結合が最適化されずに遅くなる可能性があります。
この説明は、SQLの実行計画やインデックスの効果を考慮した最適化の観点からのものです。実際の状況やデータ量によって、この影響は変わることがあります。