亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > PostgreSQL > 正文

PostgreSQL7.0手冊-用戶手冊-7. 索引和鍵字

2019-09-08 23:33:13
字體:
來源:轉載
供稿:網友
第七章. 索引和鍵字

鍵字 
部分索引 



索引主要用來提高數據庫性能。它們應該定義在那些常用于做重復查詢的資格條件的表的列(或者表的字段)上。對索引的不當使用會導致性能的下降,因為更新和插入時間在索引出現時都增加了?!?
索引還可以用于強制表的主鍵的唯一性。當定義一個索引為 UNIQUE,那么將不允許多行具有相同的索引字段。這里的目的是保證數據完整性,而不是改善性能,因此上面的關于不當使用的話并不適用?!?

可以定義兩種類型的索引: 

對于值索引(value index),索引的鍵字域聲明為字段名;如果索引訪問模式支持多字段索引,可以聲明多個字段?!?
對于 函數索引(functional index),它是定義在一個函數的結果上的,這個用戶定義函數對某一個表的一個或多個字段進行操作。這是一個單字段索引(也就是說,函數結果),即使該函數使用多于一個輸入字段。函數索引可以用于獲得對那些基于操作符的數據的快速訪問,這些數據通常需要做一些轉換,轉換成基本數據類型來使用?!?
Postgres 為從索引提供 btree,rtree 和 hash(散列)訪問模式。btree 訪問模式是一個 Lehman-Yao 高并發 btrees 的實現。rtree 訪問模式用 Guttman 的二分算法實現了標準的 rtrees。hash(散列)訪問模式是 Litwin 的線性散列的一個實現。我們單獨的列出這些所用的算法是要表明所有這些訪問模式都是完全動態的并且不必進行周期性的優化(例如,象靜態散列算法常見的那樣)?!?
當一個索引了的字段涉及到使用: <,<=,=,>=,> 之一進行比較時, Postgres 的查詢優化器將考慮在掃描中使用 btree 索引?!?

當一個索引了的字段涉及到使用: <<,&<,&>,>>,@,~=,&& 之一進行比較時,Postgres 的查詢優化器將考慮在掃描中使用 rtree 索引?!?

當一個索引了的字段涉及到使用 = 進行比較時,Postgres 的查詢優化器將考慮在掃描中使用散列(hash)索引?!?

目前,只有 btree 訪問模式支持多字段索引。缺省最多可以聲明 16 的關鍵字(這個限制可以在制作 Postgres 時改變)?!?

可以為某個索引的每個字段聲明一個操作符表(operator class)。這個操作符表標識該索引用于該字段要使用的操作符。例如,一個在4字節整數上的 btree 索引將使用 int4_ops 表;這個操作符表包括用于4字節整數的比較函數。實際上,該字段類型的缺省操作符通常就足夠了。擁有操作符表的原因是:對于某些數據類型,可能存在多于一個有意義的順序。例如,我們可能想排序兩個復數,既可能通過絕對值,也可能通過實數部分。我們可以通過為該數據類型定義兩個操作符表,然后在建立索引時選擇合適的一個來實現這個目的。同樣還有一些有特殊用途的操作符表: 

操作符表 box_ops 和 bigbox_ops 都支持對 box 數據類型的 rtree 索引。兩者的區別是 bigbox_ops 把方形的坐標按比例縮小,以避免在對非常大的浮點數坐標做乘法,加法和減法時出現浮點例外。如果你的方形所在的范圍的大小是 20,000 單位的平面或更大,你應該用 bigbox_ops?!?
int24_ops 操作符表在為 int2 類型的數據構建索引并且與查詢資格條件里的 int4 數據做比較時很有用。類似的,int42_ops 支持對要和查詢里的 int2 數據做比較的 int4 數據進行索引?!?
下面的查詢顯示所有定義了的操作符表: 
SELECT am.amname AS acc_name,
       opc.opcname AS ops_name,
       opr.oprname AS ops_comp
    FROM pg_am am, pg_amop amop,
         pg_opclass opc, pg_operator opr
    WHERE amop.amopid = am.oid AND
          amop.amopclaid = opc.oid AND
          amop.amopopr = opr.oid
    ORDER BY acc_name, ops_name, ops_comp

使用 DROP INDEX 刪除一個索引?!?
關鍵字
作者:由 Herouth Maoz 寫作。這些最早出現在 1998-03-02 用戶郵件列表里關于"主鍵(PRIMARY KEY)和唯一約束(UNIQUE constraints)有什么異同"問題的解答.
Subject: Re: [QUESTIONS] PRIMARY KEY | UNIQUE

        What's the difference between:(下面兩者有何區別?)

              PRIMARY KEY(fields,...) and
              UNIQUE (fields,...)

       - Is this an alias?(這是別名嗎?)
       - If PRIMARY KEY is already unique, then why(如果 PRIMARY KEY 已經唯一,)
         is there another kind of key named UNIQUE?(那么為什么有另外一個名為 UNIQUE 類型的鍵字?)

主鍵是用于標識某特定行的字段.例如,身份證(社會安全號)標識一個人. 
一個簡單的由字段組成的 UNIQUE 與行標識毫無關系.它只是一個完整性約束.例如,我收集了一些互聯網鏈接.每一個互聯網鏈接用一個唯一的數字標識,也就是主鍵,這個鍵用于表中?!?

但是,我的應用要求每套集合還要有一個唯一的名稱.因為這樣做的話一個想更改一個互聯網鏈接集合的"人"就可以找出該集合.畢竟,如果你有兩個集合都叫"生命科學",一個被標識成24433,另一個是29882,而24433那個是你要找的,這樣找要比從擁有唯一集合名稱的組中找難得多. 

所以,用戶用名稱來選擇集合.因此,對這個數據庫我們確信名稱是唯一的.但是數據庫中沒有其他表與鏈接集合表通過鏈接集合名稱相關.因此這樣做很效率很底. 

另外,盡管是唯一的,組名稱實際上并不定義集合!例如,如果某人決定將集合名從"生命科學"改為"生物學",該集合仍然是同一集合,只是名字不同而已.只要名稱仍然是唯一的即可. 

所以: 

主鍵: 
  
用于標識某行而且與之相關. 
是不可能(或很難)更新. 
不應該允許空(NULL). 
唯一域/字段: 
  
用于作為訪問某行的可選手段. 
只要唯一就可以更新. 
可以為空(NULLs). 
那么為什么標準 SQL 語法里沒有非唯一鍵的顯式定義呢?這是因為索引是與具體實現相關的.SQL 不定義實現,只定義數據庫內數據間的關系, Postgres的確允許非唯一索引,但是用于增強 SQL 鍵字的索引總是唯一的. 
因此,你可以通過任何表中的列的組合來查詢該表,不管你是否在這些列上建立了索引.索引只是每個 RDBMS 的實現提供給你的一個工具,以便令常用的查詢可以更有效的進行.有些 RDBMS 可能會給你另外一些工具,例如在主存里保留一個鍵值.它們有一些特殊的命令,例如 

CREATE MEMSTORE ON 
 COLUMNS 

(這不是一個實際的命令,只是一個例子). 
實際上,當你創建一個主鍵或一個域/字段的唯一組合時,在SQL 聲明中沒有任何地方提到創建了索引,用該鍵對數據的檢索也不會比一次順序搜索更高效! 

所以,如果你想用一個并不唯一的字段組合作為第二個鍵字,你實際上不用聲明任何東西-只要用那個組合檢索就行了.但是,如果你想令檢索更高效一些,你就不得不依賴你的RDBMS 提供者給你的工具-不管是索引還是我想象的那種 MEMSTORE 命令或是一個智能的 RDBMS,它在你還沒有意識到你常用一套特定的鍵字組合來查詢時就給你創建了索引...?。ㄋ鼜慕涷炛袑W來)?!?



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

部分索引
作者:這是從 Paul M. Aoki 1998-08-11的在 e-mail 列表中回答的問題中摘下來的。
部分索引(partial index)是建立在一個表的子集上的索引;該子集是用斷言(謂語)定義的。Postgres支持帶有任意斷言(謂語)的部分索引。我相信 IBM 用于 as/400 的 DB2 用單一子句的斷言支持部分索引?!?
部分索引的主要動機是:如果你發出的所有查詢都可以從落在某個范圍內的索引中獲益,我們為什么要對整個表建立一個索引,而帶來相關的更多的空間/時間開銷呢?(還有其他原因;參閱 Stonebraker, M, 1989b 獲取更多細節。) 

創建,更新和查詢部分索引的機制不算太差。麻煩的部分是索引的選擇(我該建立哪個索引?)和查詢優化(我該使用哪個索引?);也就是說,涉及到決定什么樣的斷言可以有效地匹配工作負荷/查詢的那部分。對那些深入數據庫理論的人而言,這個問題基本上類似于對應的物化的視圖問題,雖然有不同的開銷參數和公式。通常而言,這些問題對標準的SQL 類型是很難的問題;對黑盒擴展類型而言,這些問題是超級難的問題,因為選擇性評估理論太原始了?!?

參考 Stonebraker, M, 1989b,Olson, 1993 和 Seshardri, 1995 獲取更多信息?!?



------------------------------------------------------------------
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产免费亚洲高清| 国产精品久久久一区| 美女啪啪无遮挡免费久久网站| 亚洲精品福利在线| 亚洲第一精品夜夜躁人人躁| 91在线视频导航| 91色中文字幕| 欧美激情免费观看| 色综合色综合网色综合| 国产精品私拍pans大尺度在线| 在线丨暗呦小u女国产精品| 精品久久久精品| 亚洲bt欧美bt日本bt| 一区二区三区黄色| 亚洲97在线观看| 亚洲美女精品成人在线视频| 国产精品一区二区三区成人| 亚洲a成v人在线观看| 国产成人欧美在线观看| 久久久精品亚洲| 国产在线观看91精品一区| 97久久精品人人澡人人爽缅北| 欧美在线观看网站| 91探花福利精品国产自产在线| 国产精品av电影| 欧美日韩在线另类| 日韩精品在线视频观看| 欧美视频中文在线看| 波霸ol色综合久久| 日韩欧美在线免费观看| 欧美激情一级欧美精品| 亚洲免费视频网站| 国产日韩在线看| 国产精品亚洲视频在线观看| 国产极品精品在线观看| 97免费视频在线| 91精品久久久久久久久久久| 亚洲**2019国产| 日韩美女在线观看| 亚洲人成电影网站色xx| 精品久久久久久久久久久| 亚洲国产精品久久精品怡红院| 久久久av电影| 久久精品国产欧美激情| 久久精品国产亚洲| 中文字幕亚洲欧美在线| 国产精品视频免费在线| www.日本久久久久com.| 亚洲品质视频自拍网| 欧美激情成人在线视频| 亚洲自拍偷拍色片视频| 91欧美精品午夜性色福利在线| 欧洲成人在线观看| 成人国产亚洲精品a区天堂华泰| 久久这里有精品视频| 成人做爽爽免费视频| 欧美老肥婆性猛交视频| 成人国产精品久久久久久亚洲| 日韩欧美亚洲综合| 亚洲视频电影图片偷拍一区| 亚洲精品丝袜日韩| 国内偷自视频区视频综合| 亚洲欧美日韩久久久久久| 神马国产精品影院av| 国产成人拍精品视频午夜网站| 国产精品爽爽爽爽爽爽在线观看| 日韩av成人在线| 精品中文字幕在线观看| 成人av.网址在线网站| 欧美黄色片在线观看| 国产精品久久久久77777| 色阁综合伊人av| 欧美中文字幕在线| 久久99精品久久久久久琪琪| 大伊人狠狠躁夜夜躁av一区| 国产精品91免费在线| 欧美在线亚洲在线| 深夜精品寂寞黄网站在线观看| 国产一区二区三区在线播放免费观看| 欧美亚洲国产日韩2020| 在线色欧美三级视频| 亚洲成人aaa| 久久国产精品久久久久| 亚洲国产精品yw在线观看| 亚洲一区二区国产| 国色天香2019中文字幕在线观看| 日韩中文字幕国产| 超碰91人人草人人干| 国产丝袜一区二区三区免费视频| 伊人av综合网| 国内外成人免费激情在线视频| 亚洲国产精品国自产拍av秋霞| 欧美性色19p| 欧美成人免费全部| 欧美日韩一二三四五区| 国产精品ⅴa在线观看h| 国产一区二区视频在线观看| 国产丝袜精品第一页| 日韩视频在线免费| 国产精品精品视频一区二区三区| 亚洲精品一区二区三区婷婷月| 久久久久一本一区二区青青蜜月| 久久久久亚洲精品成人网小说| 亚洲成人黄色在线观看| 精品视频—区二区三区免费| 欧美黑人性视频| 欧美成年人视频网站| 96pao国产成视频永久免费| 日韩精品高清在线观看| 日韩欧美亚洲范冰冰与中字| 在线亚洲男人天堂| 久久中文精品视频| 成人免费观看49www在线观看| 亚洲另类激情图| 国产欧美日韩专区发布| 国产精品欧美激情| 国产成人精品免高潮费视频| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲午夜精品久久久久久性色| 成人黄色av免费在线观看| 麻豆精品精华液| 亚洲午夜小视频| 在线观看不卡av| 亚洲欧美国产高清va在线播| 91精品视频免费看| 国产精品久久二区| 成人xvideos免费视频| 日韩中文字幕在线看| 成人日韩av在线| 91久久久久久久久久久| 在线观看免费高清视频97| 久久精品视频一| 亚洲片在线观看| 国产视频综合在线| 日韩欧美极品在线观看| 久操成人在线视频| 国产精品一区二区久久久久| 欧美激情久久久| 亚洲久久久久久久久久| 久热精品视频在线| 色婷婷成人综合| 欧美日韩午夜视频在线观看| 欧美极品少妇xxxxⅹ喷水| 成人午夜两性视频| 亚洲国产精彩中文乱码av在线播放| xvideos亚洲| 日韩欧美国产骚| 国产亚洲一级高清| 精品在线观看国产| 欧美亚洲成人免费| 欧美视频在线观看免费网址| 国产精品免费看久久久香蕉| 欧美激情在线一区| 国产午夜精品久久久| 在线观看日韩欧美| 成人h猎奇视频网站| 久久久天堂国产精品女人| 中文字幕久热精品视频在线| 久久在线免费观看视频| 欧美黄色片视频| 亚洲欧洲日韩国产| 亚洲最大av在线| 亚洲国产精品va在线看黑人| 成人在线视频福利|