2012-06-16 62 views
1

我在閱讀有關數據庫中的索引。爲什麼需要單獨的索引表

首先,我有我的原始表格。然後我添加另一個表(索引表),每當我在第一個表中添加一行時,我都會努力知道將它插入索引表(按字母順序排列)。然後,當我搜索一些記錄時,我使用索引表,它將我的搜索問題轉換爲O(log)而不是O(n)。

我的問題是以下幾點:爲什麼不在原表中做這種努力?至少如果該表只有一個索引。如果它有更多的話,那麼應用索引表的想法。至少這個想法在我讀過的文獻中從未提及,我想也許有一個很好的理由。

+0

也就是說,爲什麼大多數數據庫產品都具有像[聚簇索引]這樣的概念(http://msdn.microsoft.com/zh-cn/library/ms190639(v = sql.105).aspx) –

回答

0

這不是通常在數據庫上完成的索引 - 通常一個表有索引,當查詢允許時數據庫服務器將自動嘗試使用最佳索引 - 例如,如果索引了Name列,如果名稱完全匹配(= 'foo'),則會使用您的索引;如果您使用特定字符串(LIKE 'foo%')開始查詢,它可能會選擇使用您的索引;而如果您在查詢索引列中包含子字符串(LIKE '%foo%'),那麼它不能使用該索引,並且必須掃描整個表。

+0

我認爲你的回答不能回答我的問題。我同意你所說的一切,但我問的是爲什麼要有另一個索引表,而不是直接在原始表中插入。 – pritzo

+0

我在說「你沒有**另一個**表」 –

相關問題