0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

創世記3章:インデックスの貼り忘れによる悲劇

Last updated at Posted at 2025-01-15

第一幕:神様の「創造」ミス

天地創造の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が木を見つけるのに時間がかかり、神様自身もエラー対応に苦労しました。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?