日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

要驗證索引是否有效,不一定要馬上創建索引哦

來源: 責編: 時間:2024-03-28 09:24:17 217觀看
導讀 本文轉載自微信公眾號「 紅石PG」,作者紅石PG。介紹如果要檢查某些索引是否有助于一個或多個查詢,則 HypoPG 非常有用。因此,您應該已經知道需要優化哪些查詢,以及要嘗試哪些索引。此外,HypoPG 將要創建的假設索引不會存
 本文轉載自微信公眾號「 紅石PG」,作者紅石PG

介紹

如果要檢查某些索引是否有助于一個或多個查詢,則 HypoPG 非常有用。因此,您應該已經知道需要優化哪些查詢,以及要嘗試哪些索引。9T028資訊網——每日最新資訊28at.com

此外,HypoPG 將要創建的假設索引不會存儲在任何系統表中,而是存儲在您連接的私有內存中。因此,它不會使任何表出現膨脹,也不會影響任何并發連接。9T028資訊網——每日最新資訊28at.com

此外,由于假設索引實際上并不存在,因此 HypoPG 僅能確保在使用簡單的 EXPLAIN 語句(不帶 ANALYZE 選項)時會使用它們。9T028資訊網——每日最新資訊28at.com

安裝擴展

跟任何其他擴展一樣,您必須將其安裝在希望能夠使用它的所有數據庫上。只需用一個有足夠權限的用戶,連接到要安裝 HypoPG 的數據庫上,執行以下查詢即可完成:9T028資訊網——每日最新資訊28at.com

CREATE EXTENSION hypopg;

現在就可以使用 HypoPG 了。您可以使用 psql 輕松地檢查擴展是否存在:9T028資訊網——每日最新資訊28at.com

/dx                     List of installed extensions  Name   | Version |   Schema   |             Description---------+---------+------------+------------------------------------- hypopg  | 1.1.0   | public     | Hypothetical indexes for PostgreSQL plpgsql | 1.0     | pg_catalog | PL/pgSQL procedural language(2 rows)

如您所見,已安裝了 hypopg 版本 1.1.0。如果需要使用純 SQL 進行檢查,請參考 pg_extension 表文檔。9T028資訊網——每日最新資訊28at.com

配置

以下是可用的配置參數(GUC),并且可以交互式更改:9T028資訊網——每日最新資訊28at.com

? hypopg.enabled:默認為on。使用此參數可全局啟用或禁用 HypoPG。禁用 HypoPG 后,任何假設索引都不會被使用,但不會刪除定義的假設索引。9T028資訊網——每日最新資訊28at.com

? hypopg.use_real_oids:默認為off。默認情況下,HypoPG 不會使用 “真實的” 對象標識符,而是從 ~ 14000 / 16384(分別是低于 FirstNormalObjectId 的最低未使用的 oid 和 FirstNormalObjectId)范圍內借用標識符,這些標識符由 PostgreSQL 保留,以備將來在未來的版本中使用。這不會造成任何問題,因為可用范圍是在連接首次使用 HypoPG 時動態計算的,并且還有可以應用在備用服務器上的優勢。但缺點是,您不能同時擁有大約 2500 個假設索引,并且一旦已經創建了超出最多數目的對象,創建新的假設索引會變得非常慢,一直到hypopg_reset()被調用。如果這些缺點有問題,您可以啟用此參數。然后,HypoPG 將要求提供真實的對象標識符,這將需要獲取更多鎖,并且不會在備用服務器工作,但允許使用所有可用的對象標識符。請注意,切換此參數不需要重置已經定義的假設索引,兩者可以同時共存。9T028資訊網——每日最新資訊28at.com

支持的訪問方式

支持以下訪問方式:9T028資訊網——每日最新資訊28at.com

? btree9T028資訊網——每日最新資訊28at.com

? brin9T028資訊網——每日最新資訊28at.com

? hash(需要 PostgreSQL 10 或更高版本)9T028資訊網——每日最新資訊28at.com

? bloom(需要安裝 bloom 擴展)9T028資訊網——每日最新資訊28at.com

創建假設索引

注意:使用 HypoPG 需要對 EXPLAIN 命令有一定的了解。如果您需要有關此命令的更多信息,可以查看官方文檔。另外也還有很多非常好的資源。9T028資訊網——每日最新資訊28at.com

為了清楚起見,讓我們使用一個非常簡單的測試用例,看看它是如何工作的:9T028資訊網——每日最新資訊28at.com

CREATE TABLE hypo (id integer, val text);INSERT INTO hypo SELECT i, 'line ' || i FROM generate_series(1, 100000) i;VACUUM ANALYZE hypo;

此表沒有任何索引。假設我們要檢查索引是否有助于簡單的查詢。首先,讓我們看看它的表現:9T028資訊網——每日最新資訊28at.com

EXPLAIN SELECT val FROM hypo WHERE id = 1;                       QUERY PLAN-------------------------------------------------------- Seq Scan on hypo  (cost=0.00..1791.00 rows=1 width=14)   Filter: (id = 1)(2 rows)

由于表上不存在索引,因此使用了普通的順序掃描。在 id 列上創建一個簡單 btree 索引,應該有助于此查詢。讓我們來看看 HypoPG。函數 hypopg_create_index() 可接受任何標準的 CREATE INDEX 語句(傳遞給此函數的任何其他語句都會被忽略),并為每個語句創建一個假設索引:9T028資訊網——每日最新資訊28at.com

SELECT * FROM hypopg_create_index('CREATE INDEX ON hypo (id)'); indexrelid |      indexname------------+----------------------      18284 | <18284>btree_hypo_id(1 row)

該函數返回兩列:9T028資訊網——每日最新資訊28at.com

? 假設索引的對象標識符9T028資訊網——每日最新資訊28at.com

? 生成的假設索引名稱9T028資訊網——每日最新資訊28at.com

我們可以再次運行 EXPLAIN,來查看 PostgreSQL 是否會使用這個索引:9T028資訊網——每日最新資訊28at.com

EXPLAIN SELECT val FROM hypo WHERE id = 1;                                    QUERY PLAN---------------------------------------------------------------------------------- Index Scan using <18284>btree_hypo_id on hypo  (cost=0.04..8.06 rows=1 width=10)   Index Cond: (id = 1)(2 rows)

是的,PostgreSQL 會使用這樣的索引。為了確定,讓我們檢查下實際運行查詢的時候,假設索引不會被用到:9T028資訊網——每日最新資訊28at.com

EXPLAIN ANALYZE SELECT val FROM hypo WHERE id = 1;                                            QUERY PLAN--------------------------------------------------------------------------------------------------- Seq Scan on hypo  (cost=0.00..1791.00 rows=1 width=10) (actual time=0.046..46.390 rows=1 loops=1)   Filter: (id = 1)   Rows Removed by Filter: 99999 Planning time: 0.160 ms Execution time: 46.460 ms(5 rows)

這就是創建假設索引并查看 PostgreSQL 是否會使用此類索引的全部內容。9T028資訊網——每日最新資訊28at.com

操作假設索引

還有一些其他的很方便的函數和視圖:9T028資訊網——每日最新資訊28at.com

? hypopg_list_indexes:列出已創建的所有假設索引的視圖9T028資訊網——每日最新資訊28at.com

SELECT * FROM hypopg_list_indexes; indexrelid |      index_name       | schema_name | table_name | am_name------------+-----------------------+-------------+------------+---------      18284 | <18284>btree_hypo_id  | public      | hypo       | btree(1 row)

? **hypopg()**:采用和 pg_index 相同的格式,列出所有已創建的假設索引的函數9T028資訊網——每日最新資訊28at.com

SELECT * FROM hypopg();      indexname       | indexrelid | indrelid | innatts | indisunique | indkey | indcollation | indclass | indoption | indexprs | indpred | amid----------------------+------------+----------+---------+-------------+--------+--------------+----------+-----------+----------+---------+------ <18284>btree_hypo_id |      13543 |    18122 |       1 | f           | 1      | 0            | 1978     | <NULL>    | <NULL>   | <NULL>  |  403(1 row)

? **hypopg_get_indexdef(oid)**:列出 CREATE INDEX 語句的函數,該語句可用于重新創建存儲的假設索引9T028資訊網——每日最新資訊28at.com

SELECT index_name, hypopg_get_indexdef(indexrelid) FROM hypopg_list_indexes;      index_name       |             hypopg_get_indexdef-----------------------+---------------------------------------------- <18284>btree_hypo_id  | CREATE INDEX ON public.hypo USING btree (id)(1 row)

? **hypopg_relation_size(oid)**:用于估計一個假設索引的大小的函數:9T028資訊網——每日最新資訊28at.com

SELECT index_name, pg_size_pretty(hypopg_relation_size(indexrelid))  FROM hypopg_list_indexes;      index_name       | pg_size_pretty-----------------------+---------------- <18284>btree_hypo_id  | 2544 kB(1 row)

? **hypopg_drop_index(oid)**:用于刪除指定假設索引的函數9T028資訊網——每日最新資訊28at.com

? **hypopg_reset()**:用于刪除所有假設索引的函數9T028資訊網——每日最新資訊28at.com

假設性隱藏現有索引

您可以假設性隱藏現有索引和假設索引。如果要按照文檔中的說明對其進行測試,則應首先使用 hypopg_reset() 清除任何其他假設索引的影響。9T028資訊網——每日最新資訊28at.com

舉個簡單的例子,讓我們考慮兩個索引:9T028資訊網——每日最新資訊28at.com

SELECT hypopg_reset();CREATE INDEX ON hypo(id);CREATE INDEX ON hypo(id, val);
EXPLAIN SELECT * FROM hypo WHERE id = 1;                                    QUERY PLAN---------------------------------------------------------------------------------- Index Only Scan using hypo_id_val_idx on hypo  (cost=0.29..8.30 rows=1 width=13) Index Cond: (id = 1)(2 rows)

查詢計劃現在正使用 hypo_id_val_idx 索引。9T028資訊網——每日最新資訊28at.com

? **hypopg_hide_index(oid)**:允許您使用 EXPLAIN 輸出中的索引 OID 來隱藏索引的函數。如果索引已成功隱藏,則返回 true,否則返回 false。9T028資訊網——每日最新資訊28at.com

SELECT hypopg_hide_index('hypo_id_val_idx'::REGCLASS); hypopg_hide_index------------------- t(1 row)EXPLAIN SELECT * FROM hypo WHERE id = 1;                            QUERY PLAN------------------------------------------------------------------------- Index Scan using hypo_id_idx on hypo  (cost=0.29..8.30 rows=1 width=13) Index Cond: (id = 1)(2 rows)

例如,假設查詢計劃當前正在使用 hypo_id_val_idx 索引。若要繼續測試,請使用 hypopg_hide_index(oid) 函數隱藏另一個索引。9T028資訊網——每日最新資訊28at.com

SELECT hypopg_hide_index('hypo_id_idx'::REGCLASS); hypopg_hide_index------------------- t(1 row)EXPLAIN SELECT * FROM hypo WHERE id = 1;                    QUERY PLAN------------------------------------------------------- Seq Scan on hypo  (cost=0.00..180.00 rows=1 width=13) Filter: (id = 1)(2 rows)

? **hypopg_unhide_index(oid)**:使用其 OID 還原 EXPLAIN 輸出中以前隱藏的索引的函數。如果索引已成功還原,則返回 true,否則返回 false。9T028資訊網——每日最新資訊28at.com

SELECT hypopg_unhide_index('hypo_id_idx'::regclass); hypopg_unhide_index------------------- t(1 row)EXPLAIN SELECT * FROM hypo WHERE id = 1;                            QUERY PLAN------------------------------------------------------------------------- Index Scan using hypo_id_idx on hypo  (cost=0.29..8.30 rows=1 width=13) Index Cond: (id = 1)(2 rows)

? **hypopg_unhide_all_index()**:恢復所有隱藏的索引,并返回 void 的函數。9T028資訊網——每日最新資訊28at.com

? **hypopg_hidden_indexes()**:返回所有隱藏的索引的 OID 列表的函數。9T028資訊網——每日最新資訊28at.com

SELECT * FROM hypopg_hidden_indexes(); indexid--------- 526604(1 rows)

? hypopg_hidden_indexes:返回所有隱藏的索引的格式化列表的視圖。9T028資訊網——每日最新資訊28at.com

SELECT * FROM hypopg_hidden_indexes;  indexrelid |      index_name      | schema_name | table_name | am_name | is_hypo-------------+----------------------+-------------+------------+---------+---------      526604 | hypo_id_val_idx      | public      | hypo       | btree   | f(1 rows)

注意:假設索引也是可以隱藏的。9T028資訊網——每日最新資訊28at.com

SELECT hypopg_create_index('CREATE INDEX ON hypo(id)');    hypopg_create_index------------------------------ (12659,<12659>btree_hypo_id)(1 row)EXPLAIN SELECT * FROM hypo WHERE id = 1;                                    QUERY PLAN------------------------------------------------------------------------------------ Index Scan using "<12659>btree_hypo_id" on hypo  (cost=0.04..8.05 rows=1 width=13) Index Cond: (id = 1)(2 rows)

現在該假設索引正在被使用,我們可以嘗試隱藏它,以查看更改:9T028資訊網——每日最新資訊28at.com

SELECT hypopg_hide_index(12659); hypopg_hide_index------------------- t(1 row)EXPLAIN SELECT * FROM hypo WHERE id = 1;                            QUERY PLAN------------------------------------------------------------------------- Index Scan using hypo_id_idx on hypo  (cost=0.29..8.30 rows=1 width=13) Index Cond: (id = 1)(2 rows)SELECT * FROM hypopg_hidden_indexes;  indexrelid |      index_name      | schema_name | table_name | am_name | is_hypo-------------+----------------------+-------------+------------+---------+---------       12659 | <12659>btree_hypo_id | public      | hypo       | btree   | t      526604 | hypo_id_val_idx      | public      | hypo       | btree   | f(2 rows)

注意:如果假設索引已被隱藏,則在使用 hypopg_drop_index(oid) 或 hypopg_reset() 刪除該索引時,它將自動取消隱藏。9T028資訊網——每日最新資訊28at.com

SELECT hypopg_drop_index(12659);SELECT * FROM hypopg_hidden_indexes;  indexrelid |      index_name      | schema_name | table_name | am_name | is_hypo-------------+----------------------+-------------+------------+---------+---------      526604 | hypo_id_val_idx      | public      | hypo       | btree   | f(2 rows)

9T028資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-79978-0.html要驗證索引是否有效,不一定要馬上創建索引哦

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 遭遇粉絲投訴后,BBC 放棄用 AI 生成內容宣傳《神秘博士》計劃

下一篇: 詳解CSS3中的Transition:平滑過渡與動畫效果

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产欧美日韩视频一区二区三区| 久久久www成人免费无遮挡大片 | 在线观看国产精品网站| 在线不卡中文字幕播放| 亚洲精品一二区| 中国日韩欧美久久久久久久久| 亚洲永久在线观看| 久久国产综合精品| 欧美国产日韩一二三区| 欧美日韩免费| 国产欧美日韩亚洲一区二区三区 | 亚洲视频免费观看| 久久er99精品| 欧美精品一区二区三区视频| 国产精品久久久久77777| 国产一区在线观看视频| 亚洲全部视频| 亚洲欧美日韩国产精品| 久久精选视频| 欧美日韩亚洲一区二区三区| 国产欧美一区二区三区视频| 亚洲国内自拍| 亚洲女女女同性video| 老司机免费视频一区二区三区 | 国产精品午夜久久| 亚洲黄色尤物视频| 香蕉久久夜色精品国产使用方法| 欧美wwwwww| 国产欧美在线视频| 99视频超级精品| 久久久亚洲成人| 国产精品久久99| 亚洲激情在线观看| 香港久久久电影| 欧美日产国产成人免费图片| 国产亚洲一区二区三区在线播放| 亚洲精品免费在线观看| 欧美专区在线播放| 欧美日韩国产精品专区| 黄色精品免费| 亚洲综合色网站| 欧美另类在线播放| 国内精品视频666| 亚洲一区二区av电影| 欧美成年人视频| 国产中文一区二区三区| 亚洲男人的天堂在线| 欧美精品免费在线| 在线观看的日韩av| 久久国产精品99久久久久久老狼| 欧美四级在线观看| 亚洲精品欧美日韩专区| 老司机午夜精品视频| 国产婷婷成人久久av免费高清| 一个人看的www久久| 欧美韩日一区二区| 亚洲高清不卡av| 久久视频一区二区| 国产一区日韩欧美| 欧美在线亚洲综合一区| 国产精品乱子乱xxxx| av成人免费在线观看| 免费日韩视频| 在线欧美日韩精品| 国产视频亚洲精品| 一区二区欧美日韩视频| 欧美黄色日本| 亚洲韩国日本中文字幕| 久久网站热最新地址| 国产一区二区三区四区老人| 午夜精品久久久久久久99热浪潮| 欧美日韩亚洲一区二| 亚洲精品日产精品乱码不卡| 欧美www视频在线观看| 在线观看日韩av电影| 久久亚洲精品一区二区| 国产在线欧美| 久久精品一区二区| 国语精品一区| 久久久久久一区二区| 黄色亚洲大片免费在线观看| 欧美伊人影院| 国产午夜亚洲精品羞羞网站| 久久超碰97人人做人人爱| 国产午夜精品在线| 久久精品2019中文字幕| 国内精品美女在线观看| 久久综合婷婷| 91久久夜色精品国产九色| 欧美黄免费看| 夜夜嗨一区二区三区| 欧美日韩mp4| 亚洲先锋成人| 国产欧美日韩亚洲一区二区三区 | 久久精品国产一区二区三| 国内精品一区二区三区| 老司机精品导航| 亚洲日韩欧美视频一区| 欧美日韩精品免费看| 中文欧美日韩| 国产精品亚洲аv天堂网| 久久精品免视看| 在线日韩欧美视频| 欧美国产在线电影| 一区二区免费在线观看| 国产精品国产成人国产三级| 午夜天堂精品久久久久| 国内精品久久久久影院优| 老**午夜毛片一区二区三区| 亚洲日本中文字幕| 欧美午夜无遮挡| 性欧美xxxx大乳国产app| 黄色国产精品一区二区三区| 欧美高清视频在线观看| 亚洲天堂网在线观看| 国产欧美日韩综合精品二区| 久久久精品动漫| 亚洲精品偷拍| 国产九九精品| 免费亚洲网站| 亚洲一区欧美激情| 狠狠入ady亚洲精品经典电影| 欧美国产一区二区在线观看| 亚洲一二三区在线| 黄色一区二区三区四区| 欧美日韩情趣电影| 久久av一区二区三区亚洲| 亚洲国产经典视频| 欧美午夜精品久久久久久浪潮| 欧美在线999| 亚洲全黄一级网站| 国产精品一区二区男女羞羞无遮挡| 久久五月天婷婷| 一区二区高清视频| 国精产品99永久一区一区| 欧美另类在线播放| 欧美一区1区三区3区公司| 亚洲国产欧美国产综合一区| 欧美视频日韩视频在线观看| 久久精品视频在线观看| 日韩一区二区福利| 国模吧视频一区| 欧美日韩国产在线一区| 欧美制服丝袜第一页| 日韩视频在线你懂得| 国产在线视频欧美| 欧美日韩亚洲免费| 久久综合给合久久狠狠狠97色69| 中文久久乱码一区二区| 亚洲国产岛国毛片在线| 国产精品一区三区| 欧美精品一区视频| 久久婷婷国产综合精品青草| 亚洲无限乱码一二三四麻| 激情自拍一区| 国产美女扒开尿口久久久| 欧美精品一区二区三区在线播放| 久久精品夜夜夜夜久久| 亚洲一本大道在线| 亚洲精品久久久久久久久| 韩国免费一区| 国产欧美va欧美不卡在线| 欧美午夜精品电影| 欧美大尺度在线| 久久久久久有精品国产| 午夜精品视频一区| 中文日韩欧美| 夜夜精品视频一区二区| 亚洲国产精品一区在线观看不卡| 国产日韩精品一区二区浪潮av| 欧美色视频在线| 欧美精品在线观看播放| 麻豆精品一区二区av白丝在线| 欧美在现视频| 亚洲欧美日韩视频一区| 在线视频精品一区| 99精品福利视频| 亚洲精品国偷自产在线99热| 一区二区视频欧美| 国产一区免费视频| 国产日韩欧美成人| 国产精品永久入口久久久| 欧美手机在线| 欧美日韩国产在线播放| 欧美韩国日本一区| 老司机67194精品线观看| 久久久久亚洲综合| 久久精品一区二区三区不卡| 午夜激情综合网| 亚洲性av在线| 亚洲一区二区精品| 欧美日韩亚洲高清| 欧美高清在线观看| 欧美国产精品久久| 欧美高清在线播放| 欧美暴力喷水在线| 蜜臀91精品一区二区三区| 久久久综合精品| 久久久久久9| 久久久久中文| 久久综合久久综合久久综合| 噜噜爱69成人精品| 欧美成人午夜激情在线| 欧美aaaaaaaa牛牛影院|