2010-04-23 100 views
-5

這是一個多指標的問題:是否可以在索引上創建索引?

  1. 有沒有一種方法可以創建索引的索引 ?
  2. 爲什麼要這樣呢?
  3. 如果是這樣,是否有任何例子?
+12

兩條建議:1.讓你的問題更清楚,2:接受你的問題的答案 – 2010-04-23 19:53:55

+1

我必須與[@Philippe Leybaert]聯合,我發現你有更多有效的輸入,當你表明你關心X- )。還有興趣,請你解釋一下**爲什麼**你想試試這個? – 2010-04-23 20:10:56

回答

10

NO,指數都是爲了列索引用於快速找到與特定 列值行的表

How MySQL Uses Indexes

。 沒有索引,MySQL必須在第一行開始 ,然後在整個表中讀取 以查找 相關行。表越大, 這個成本就越多。如果該表具有 這一列的索引, MySQL可以快速確定 的位置,以在 的中間尋找數據文件,而不必在所有數據文件中查找 。如果一個表有1,000行,則至少比順序讀取快100倍。

+1

我該如何決定何時創建索引或刪除索引?我必須經常從8列的表格中訪問兩列。 (也就是說有些表格有1000行,10000行,100萬,2-3百萬,500萬)。跟索引一起去總是很好嗎?創建索引會不會變成一個糟糕的主意? – user319280 2010-04-23 20:02:55

+1

當性能糟糕時應使用索引,而不是10-1000表格的規則。如果您發現查詢速度較慢,請查看索引。我從來沒有見過有10行表格執行不好的表格,但加入更大的表格(10,000,000)表格可能會給您帶來問題。正如那句老話所說的那樣,**不要修復它,如果它不破壞** – 2010-04-23 20:08:09

3

在oracle文檔中,您可以從create index的語法圖中看到它不適用於索引。
我也不能想到你想要的理由。

0

索引已經排序,所以你可能不想創建索引。但是,如果要進行低級編程,則希望將索引的子集存儲在內存或磁盤的較小區域中,例如每1024個或每2048個記錄,以便您可以先查找並搜索更大的位置索引一條記錄在於。

「平方根」規則在這裏很有效。所以如果這個表有400萬個條目,那就是2048 * 2048(大約)。您可以「加載」2048條記錄,然後找到需要加載的主索引的哪個2048記錄部分以查找記錄,因此總共只加載2個塊,而不必在2048個塊中進行二進制搜索。

這可能是一個巨大的優化,但它是低級程序員,即數據庫工具的開發人員,而不是他們的用戶。

相關問題