| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 43. 系統表 | Fast Forward | Next |
pg_am 存儲有關索引訪問方法的信息。 系統支持的每種索引訪問方法都有一行。
Table 43-3. pg_am 字段
| 名字 | 類型 | 引用 | 描述 |
|---|---|---|---|
| amname | name | 訪問方法的名字 | |
| amowner | int4 | pg_shadow.usesysid | 所有者的用戶ID(目前沒有使用) |
| amstrategies | int2 | 這個訪問方法的操作符策略個數 | |
| amsupport | int2 | 這個訪問方法的支持過程個數 | |
| amorderstrategy | int2 | 如果索引不提供排序順序,為零,否則就是描述排序順序的策略操作符個數 | |
| amcanunique | bool | 這種訪問方式是否支持唯一索引? | |
| amcanmulticol | bool | 這種訪問方式是否支持多字段索引? | |
| amindexnulls | bool | 這種訪問方式是否支持NULL索引記錄? | |
| amconcurrent | bool | 這種訪問方式是否支持並發更新? | |
| amgettuple | regproc | pg_proc.oid | "下一個有效元組" 函數 |
| aminsert | regproc | pg_proc.oid | "插入這個元組"函數 |
| ambeginscan | regproc | pg_proc.oid | "開始新掃描"函數 |
| amrescan | regproc | pg_proc.oid | "重新開始這個掃描"函數 |
| amendscan | regproc | pg_proc.oid | "結束這次掃描"函數 |
| ammarkpos | regproc | pg_proc.oid | "標記當前掃描位置"函數 |
| amrestrpos | regproc | pg_proc.oid | "恢復已標記的掃描位置"函數 |
| ambuild | regproc | pg_proc.oid | "建立新索引"函數 |
| ambulkdelete | regproc | pg_proc.oid | 批量刪除函數 |
| amvacuumcleanup | regproc | pg_proc.oid | VACUUM後清理函數 |
| amcostestimate | regproc | pg_proc.oid | 估計一個索引掃描的開銷 |
一種支持多字段(amcanmulticol 為真) 的訪問方法必須支持在第一個字段以後的字段裡對空值(NULL) 建索引,因為規劃器會假設這個索引可以用于只用第一個字段的查詢。 假設有一個在(a,b)上的索引,而一個查詢的條件是WHERE a = 4, 系統會認為可以在 a = 4 上使用索引來掃描,如果 索引忽略了b為空(null)的行那麼是錯誤的。但是如果它忽略了第一個 索引字段為空的行則是正確的(目前GiST就是這樣。) 只有在索引訪問方法索引了所有行,包括那些任意null的組合的行之後, 才可以把 amindexnulls 設置為真。