2010-08-29 87 views
4

形式維基百科:http://en.wikipedia.org/wiki/Index_(database)具有靈活索引的數據庫?

有些數據庫通過允許在函數或表達式創建的索引的索引延伸的功率。例如,可以在upper(last_name)上創建一個索引,它只會在索引中存儲last_name字段的大寫版本。有時支持的另一個選項是使用「過濾」索引,其中僅爲滿足某些條件表達式的記錄創建索引條目。靈活性的另一方面是允許對用戶定義的函數進行索引,以及從各種內置函數形成的表達式。

什麼是那些支持靈活的索引可以是數據庫:

  • 論計算列像:(COL1 COL2 +)* 100個
  • 過濾索引。
  • 索引用戶定義的函數。

以及此功能的已知術語?

回答

1

在oracle中它們被稱爲基於函數的索引。

對於過濾,您可能會很棘手,並創建一個函數,如果過濾器匹配返回值,否則返回null。空值不存儲在btree索引中,因此索引基本上被過濾。您只需確保在查詢中使用相同的功能。

我相信在sql server中你可以創建一個計算列和索引。

-1

據我所知,所有主要的RDBS都支持這個功能。我個人在MySQL和PostgreSQL上使用過它,但如果它不在MSSQL和Oracle中,我會感到震驚。

不幸的是,我不知道這個任何特殊術語。

+5

MySQL支持這個嗎?不知道。你能發佈一個鏈接到一些更多的信息嗎?謝謝。 – Piskvor 2010-08-29 20:32:03

+0

http://dev.mysql.com/doc/refman/5.1/en/create-index.html – 2010-08-30 20:14:56

+0

問題是關於靈活索引,而不是關於常規索引。到目前爲止,MySQL不支持靈活的索引。 – Jocelyn 2012-11-02 11:34:28

0

SQL Server 2000+(至少)支持基於函數的列和計算列的索引。函數索引可以使用索引視圖在函數上覆制。

有一如既往的條件,但主要是圍繞確定性(這可能是普遍的)

的SQL Server 2008+已經過濾索引。

AFAIK,沒有特別的名詞。他們只是索引。