<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    zhyiwww
    用平實的筆,記錄編程路上的點點滴滴………
    posts - 536,comments - 394,trackbacks - 0

    CREATE INDEX

    Name

    CREATE INDEX — 構造一個從索引
    CREATE [ UNIQUE ] INDEX index_name ON table
        [ USING acc_name ] ( column [ ops_name ] [, ...] )
    CREATE [ UNIQUE ] INDEX index_name ON table
        [ USING acc_name ] ( func_name( column [, ... ]) [ ops_name ] )
      

    輸入

    UNIQUE

    令系統檢測當索引創建時(如果數據已經存在) 和每次添加數據時表中是否有重復值.如果插入或更新的值 會導致重復的記錄時將生成一個錯誤.

    index_name

    要創建的索引名.

    table

    要索引的表名.

    acc_name

    用于索引的訪問模式.缺省訪問模式是 BTREE. Postgres 提供三種用于從索引的訪問模式:

    BTREE

    一個 Lehman-Yao 高度并發 btrees 的實現.

    RTREE

    用 Guttman 分裂法做的標準 rtrees 的實現.

    HASH

    一個Litwin 線性哈希(散列)法的實現.

    column

    表的列/字段名.

    ops_name

    一個關聯的操作符表.參閱下文獲取細節。

    func_name

    一個函數,其返回值可被索引.

    輸出

    CREATE

    索引成功創建的返回信息.

    ERROR: Cannot create index: 'index_name' already exists.

    如果不能創建索引,返回此信息.

    描述

    CREATE INDEX 在指定的表 table 上構造一個名為 index_name 的索引.

    小技巧: 索引主要用來提高數據庫性能.但是如果不恰當的使用將導致性能的下降.

    在上面第一個語法里,索引的鍵字以列/字段名聲明. 如果索引的訪問模式支持多列索引,我們也可以聲明多個字段.

    在上面顯示的第二種語法中,索引是以用戶定義的函數 func_name 的結果定義的, 該函數應用于一個表的一個或多個字段. 這些函數索引(functional indices) 可用于獲取更快的數據訪問速度, 尤其在這些數據的操作是基于一些需要做一定轉換才能應用基本數據的操作符時.

    Postgres 為從索引提供 btree,rtree 和 hash(散列)訪問模式。 btree 訪問模式是一個 Lehman-Yao 高并發 btrees 的實 現。rtree 訪問模式用 Guttman 的二次分裂算法實現了標準的 rtrees。 hash(散列)訪問模式是 Litwin 的線性散列的一個實現。 我們單獨的列出這些所用的算法是要表明所有這些訪問模式 都是完全動態的并且不必進行周期性的優化(例如,象 靜態散列算法常見的那樣)。

    使用 DROP INDEX 刪除一個索引.

    注意

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

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

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

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

    可以為索引的每個列/字段聲明一個 操作符表. 操作符表標識將要被該索引用于該列/字段的操作符. 例如, 一個4-字節整數的 btree 索引將使用 int4_ops 表; 這個操作符表包括4-字節整數的比較函數. 實際上,該域的數據類型的缺省操作符表一般就足夠了. 某些數據類型有操作符表的原因是,它們可能有多于一個的有意義的順序. 例如,我們對復數類型排序時有可能以絕對值或者以實數部分. 我們可以通過為該數據類型定義兩個操作符表,然后在建立索引的時候選擇 合適的表來實現.還有些操作符表有特殊的用途:

    • 操作符表 box_opsbigbox_ops 都支持對 box 數據類型的 rtree 索引. 兩者的區別是 bigbox_ops 方形的坐標按比例縮小, 以避免在對非常大的浮點數坐標做乘法,加法和減法時出現浮點例外。 如果你的方形所在 的范圍的大小是 20,000 單位的平面或更大,你應該用 bigbox_ops.

    下面的查詢顯示所有已定義的操作符表:

    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
        

    用法

    在表films上的 title字段創建一個 btree 索引:

    CREATE UNIQUE INDEX title_idx
        ON films (title);
      

    兼容性

    SQL92

    CREATE INDEX 是 Postgres 語言擴展.

    在 SQL92 中沒有 CREATE INDEX 命令.



    |----------------------------------------------------------------------------------------|
                               版權聲明  版權所有 @zhyiwww
                引用請注明來源 http://m.tkk7.com/zhyiwww   
    |----------------------------------------------------------------------------------------|
    posted on 2006-06-02 18:50 zhyiwww 閱讀(394) 評論(0)  編輯  收藏 所屬分類: database
    主站蜘蛛池模板: 天天干在线免费视频| 国产成人免费片在线观看 | 亚洲六月丁香婷婷综合| 亚洲 日韩经典 中文字幕| 免费永久在线观看黄网站| gogo免费在线观看| 国产麻豆剧传媒精品国产免费| 免费看内射乌克兰女| 亚洲午夜在线电影| 国产成人精品男人免费| 久久免费观看国产99精品| 亚洲日韩欧洲乱码AV夜夜摸| 91av免费观看| 草久免费在线观看网站| 亚洲成av人片不卡无码| 国产亚洲日韩在线三区| 99在线视频免费观看视频| 免费无码黄网站在线看| 亚洲精品国产第一综合99久久 | 亚洲人成免费网站| 亚洲另类激情综合偷自拍图| 天天摸天天操免费播放小视频 | 日本免费污片中国特一级| 亚洲另类无码一区二区三区| 免费无码不卡视频在线观看| 国产色无码精品视频免费| 亚洲乱人伦中文字幕无码| 91亚洲自偷手机在线观看| 亚洲一区二区三区在线视频 | 高清国语自产拍免费视频国产| 成在人线av无码免费高潮喷水| 亚洲AV无码成人精品区日韩| 亚洲性无码av在线| 亚洲欧洲成人精品香蕉网| 亚洲成a人片在线播放| 久久九九全国免费| 在线播放免费人成视频网站| 亚洲成av人片在www鸭子| 亚洲国产午夜电影在线入口| 亚洲综合精品香蕉久久网97| 亚洲av无码成h人动漫无遮挡|