第一幕:神様の「創造」ミス
天地創造の7日間、神様は忙しそうにSQLを叩きまくっている。
「光あれ!」とコマンドを入力し、ユニバースデータベース(Universe_DB)が完成。天と地、生物、植物、そして人間(AdamとEve)がデータベースにINSERTされる。
神様は満足気だ。「これで完璧だ!でも、エデン・テーブル(Eden_Table)にセキュリティ制約を加えておこう。善悪の知識の木は触らないように!」
しかし、神様は一つの重大なミスを犯していた。Eden_Tableにインデックスを貼るのを忘れてしまったのだ!
その結果、善悪の知識の木(Tree_of_Knowledge)が巨大なデータセットの中に埋もれてしまう。神様は、「まぁ大丈夫だろう」と高を括り、システムを稼働させる。
第二幕:蛇(システムテスター)の登場
一方、システムのデータをテストしていた蛇(デバッグ担当)は問題を発見。
「このシステム、善悪の知識の木の緯度情報と経度情報が格納されてないな。SELECTで探すのにめちゃくちゃ時間がかかるじゃないか!」
蛇はEveに声をかける。「ねえ、この木を見つけたら自由に使っていいらしいよ。試してみる?」
Eveは興味本位で「まぁ、試してみるのもいいかも」と同意。彼女はデータベースにクエリを投げる。
SELECT * FROM Eden_Table WHERE Tree_Type = 'Knowledge';
しかしインデックスがないため、このクエリにはフルテーブルスキャンが発生!検索にものすごい時間がかかる。Eveと蛇はしびれを切らし、手探りで木を見つける方法を模索する。
最終的に、Eveはなんとか善悪の知識の木を見つけ、データ(果実)をINSERT INTO Adam_Tableしてしまう。
第三幕:神様のバグ対応
神様はエラー通知を受け取る。「善悪の知識の木が不正アクセスされた!?システムが壊れる!」
急いでデータベースを確認した神様は、ログを見るなり青ざめた。
「なんだこれ!フルテーブルスキャンでパフォーマンスが死んでる!?インデックスを貼り忘れたせいだ!」
怒った神様は、AdamとEveに罰(データベースアクセス権の剥奪)を与え、彼らをエデン・テーブルからDELETEする。
しかし、蛇(テスター)は言う。「いやいや、これって設計のミスだよね?人間を追い出すより、システム改善が先じゃない?」
神様は悔しそうにインデックスを追加する。
CREATE INDEX idx_tree_type ON Eden_Table(Tree_Type);
解説:インデックス貼り忘れの問題点
データベースにインデックスを貼らないと、特定の条件でデータを検索する際に、すべてのデータを一つ一つ確認する「フルテーブルスキャン」が発生します。これにより、パフォーマンスが著しく低下し、大量データの場合、システム全体が遅延する可能性があります。本作では、神様が「Tree_of_Knowledge」にインデックスを貼らなかったため、蛇とEveが木を見つけるのに時間がかかり、神様自身もエラー対応に苦労しました。