怎么使用PostgreSQL中Hash索引-創新互聯

本篇內容介紹了“怎么使用PostgreSQL中Hash索引”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

創新互聯從2013年開始,是專業互聯網技術服務公司,擁有項目網站制作、成都網站制作網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元白堿灘做網站,已為上家服務,為白堿灘各地企業和個人服務,聯系電話:18982081108

邏輯結構
可以把Hash Index理解為一個Hash Table,每個Hash bucket存儲根據Hash Function計算得到的對應的索引條目,為了節省空間,Hash索引條目只存儲Hash Code(即Hash Value) + TID而不存儲Hash Key(即索引鍵值),掃描索引后還必須讀取相應的數據表行,因此Index Only Scan不適用于Hash Index.

testdb=# drop table if exists t_idx1;
DROP TABLE
testdb=# create table t_idx1(id int,c1 varchar(20));
CREATE TABLE
testdb=# create index idx_t_idx1_id on t_idx1 using hash(id);
CREATE INDEX
testdb=# insert into t_idx1 select generate_series(1,100000);
INSERT 0 100000
testdb=# analyze t_idx1;
ANALYZE
testdb=# explain verbose select * from t_idx1 where id = 1;
                                     QUERY PLAN                                     
------------------------------------------------------------------------------------
 Index Scan using idx_t_idx1_id on public.t_idx1  (cost=0.00..8.02 rows=1 width=62)
   Output: id, c1
   Index Cond: (t_idx1.id = 1)
(3 rows)
testdb=# -- 不能實現Index Only Scan
testdb=# explain verbose select id from t_idx1 where id = 100;
                                    QUERY PLAN                                     
-----------------------------------------------------------------------------------
 Index Scan using idx_t_idx1_id on public.t_idx1  (cost=0.00..8.02 rows=1 width=4)
   Output: id
   Index Cond: (t_idx1.id = 100)
(3 rows)

而普通的B-Tree索引是可以Index Only Scan的:

testdb=# create table t_idx2(id int,c1 varchar(20));
CREATE TABLE
testdb=# insert into t_idx2 select generate_series(1,100000);
INSERT 0 100000
testdb=# create index idx_t_idx2_id on t_idx2 using btree(id);
CREATE INDEX
testdb=# analyze t_idx2;
ANALYZE
testdb=# explain verbose select id from t_idx2 where id = 100;
                                       QUERY PLAN                                       
----------------------------------------------------------------------------------------
 Index Only Scan using idx_t_idx2_id on public.t_idx2  (cost=0.29..8.31 rows=1 width=4)
   Output: id
   Index Cond: (t_idx2.id = 100)
(3 rows)

有四種頁面,分別是Meta page,Bucket Page,Overflow page和Bitmap page.

頁面類型說明
Meta pagepage number zero, which contains information on what is inside the index.
Bucket pagesmain pages of the index, which store data as ?hash code — TID? pairs.
Overflow pagesstructured the same way as bucket pages and used when one page is insufficient for a bucket
Bitmap pageswhich keep track of overflow pages that are currently clear and can be reused for other buckets

使用pageinspect插件可查看index中的相關信息

testdb=# select hash_page_type(get_raw_page('idx_t_idx1_id',0));
 hash_page_type 
----------------
 metapage
(1 row)
testdb=# select hash_page_type(get_raw_page('idx_t_idx1_id',1));
 hash_page_type 
----------------
 bucket
(1 row)
testdb=# \x
Expanded display is on.
testdb=# select * from hash_page_stats(get_raw_page('idx_t_idx1_id',1));
-[ RECORD 1 ]---+-----------
live_items      | 189
dead_items      | 0
page_size       | 8192
free_size       | 4368
hasho_prevblkno | 256
hasho_nextblkno | 4294967295
hasho_bucket    | 0
hasho_flag      | 2
hasho_page_id   | 65408
testdb=# select * from hash_page_stats(get_raw_page('idx_t_idx1_id',2));
-[ RECORD 1 ]---+-----------
live_items      | 201
dead_items      | 0
page_size       | 8192
free_size       | 4128
hasho_prevblkno | 257
hasho_nextblkno | 4294967295
hasho_bucket    | 1
hasho_flag      | 2
hasho_page_id   | 65408

“怎么使用PostgreSQL中Hash索引”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注創新互聯-成都網站建設公司網站,小編將為大家輸出更多高質量的實用文章!

標題名稱:怎么使用PostgreSQL中Hash索引-創新互聯
網頁路徑:http://m.kartarina.com/article44/cddpee.html

成都網站建設公司_創新互聯,為您提供小程序開發ChatGPT定制網站網站建設網站內鏈網站改版

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設
主站蜘蛛池模板: 日韩精品无码区免费专区| 国产无码网页在线观看| 久久久久亚洲Av片无码v| 东京热人妻无码一区二区av| 亚洲国产日产无码精品| 久久精品中文字幕无码绿巨人 | 亚洲v国产v天堂a无码久久| 亚洲AV无码成H人在线观看| 久久综合精品国产二区无码| 亚洲av中文无码| 无码专区HEYZO色欲AV| 蜜桃臀AV高潮无码| 无码av免费一区二区三区| 真人无码作爱免费视频| 久久久久亚洲av无码专区| 中文无码乱人伦中文视频在线V| 亚洲欧洲AV无码专区| 无码人妻熟妇AV又粗又大| 中文字幕无码一区二区免费| 亚洲AV综合色区无码一二三区| 性无码专区无码片| 超清纯白嫩大学生无码网站| 免费无码看av的网站| 人妻少妇看A偷人无码精品视频| 蜜桃臀无码内射一区二区三区| 波多野结衣AV无码久久一区| 国产成人年无码AV片在线观看| 免费看成人AA片无码视频羞羞网 | 东京热人妻无码一区二区av| 无码人妻aⅴ一区二区三区| 无码国产精品一区二区免费式影视 | 麻豆aⅴ精品无码一区二区 | 久久久久亚洲av无码专区喷水| 亚洲国产AV无码专区亚洲AV| 亚洲AV无码乱码精品国产| 免费无码专区毛片高潮喷水 | 亚洲精品无码你懂的| 中文字幕无码免费久久9一区9| 在线观看无码的免费网站| 67194成是人免费无码| 无码丰满熟妇浪潮一区二区AV|