首頁 資料庫 mysql教程 【原创】PostgreSQL hstore 列性能提升一例

【原创】PostgreSQL hstore 列性能提升一例

Jun 07, 2016 pm 05:17 PM
postgresql 最佳化

PostgreSQL支持hstore来存放KEY-VALUE这类数据,其实也类似于ARRAY或者JSON类型。要高效的使用这类数据,当然离不开高效的索引。我们今天就来看看两类不同的索引

PostgreSQL 支持hstore 来存放KEY->VALUE这类数据, 其实也类似于ARRAY或者JSON类型。  要高效的使用这类数据,当然离不开高效的索引。我们今天就来看看两类不同的索引对于同一种检索请求的性能问题。


假如我们有这样一个原始表,基于str1字段有一个BTREE索引。

t_girl=# \d status_check;           Table "ytt.status_check"  Column |         Type          | Modifiers  --------+-----------------------+-----------  is_yes | boolean               | not null  str1   | character varying(20) | not null  str2   | character varying(20) | not null Indexes:     "index_status_check_str1" btree (str1)



里面有10W条记录。 数据大概如下,

t_girl=# select * from status_check limit 2;  is_yes | str1 |         str2          --------+------+----------------------  f      | 0    | cfcd208495d565ef66e7  t      | 1    | c4ca4238a0b923820dcc (2 rows) Time: 0.617 ms t_girl=#


存放hstore类型的status_check_hstore 表结构,基于str1_str2字段有一个GIST索引。

 Table "ytt.status_check_hstore"   Column   |  Type   | Modifiers  -----------+---------+-----------  is_yes    | boolean |   str1_str2 | hstore  |  Indexes:     "idx_str_str2_gist" gist (str1_str2)  t_girl=# select * from status_check_hstore limit 2;  is_yes |          str1_str2           --------+-----------------------------  f      | "0"=>"cfcd208495d565ef66e7"  t      | "1"=>"c4ca4238a0b923820dcc" (2 rows) Time: 39.874 ms


接下来我们要得到跟查询原始表一样的结果,当然原始表的查询非常高效。 表语句以及结果如下,

t_girl=# select * from status_check where str1 in ('10','23','33');          is_yes | str1 |         str2          --------+------+----------------------  t      | 10   | d3d9446802a44259755d  t      | 23   | 37693cfc748049e45d87  f      | 33   | 182be0c5cdcd5072bb18 (3 rows) Time: 0.690 ms


上面的语句用了不到1毫秒。


接下来我们对hstore表进行查询,

t_girl=# select is_yes,skeys(str1_str2),svals(str1_str2) from status_check_hstore where str1_str2 ?| array['10','23','33'];  is_yes | skeys |        svals          --------+-------+----------------------  t      | 10    | d3d9446802a44259755d  t      | 23    | 37693cfc748049e45d87  f      | 33    | 182be0c5cdcd5072bb18 (3 rows) Time: 40.256 ms

我的天,比原始表的查询慢了几十倍。


看下查询计划,把所有行都扫描了一遍。

                                    QUERY PLAN                                      -----------------------------------------------------------------------------------  Bitmap Heap Scan on status_check_hstore  (cost=5.06..790.12 rows=100000 width=38)    Recheck Cond: (str1_str2 ?| '{10,23,33}'::text[])    ->  Bitmap Index Scan on idx_str_str2_gist  (cost=0.00..5.03 rows=100 width=0)          Index Cond: (str1_str2 ?| '{10,23,33}'::text[]) (4 rows) Time: 0.688 ms


我们想办法来优化这条语句, 如果把这条语句变成跟原始语句一样的话,那么是否就可以用到BTREE索引了?

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Golang的gc優化策略探討 Golang的gc優化策略探討 Mar 06, 2024 pm 02:39 PM

Golang的gc優化策略探討

深度解讀:為何Laravel速度慢如蝸牛? 深度解讀:為何Laravel速度慢如蝸牛? Mar 07, 2024 am 09:54 AM

深度解讀:為何Laravel速度慢如蝸牛?

解碼Laravel效能瓶頸:優化技巧全面揭秘! 解碼Laravel效能瓶頸:優化技巧全面揭秘! Mar 06, 2024 pm 02:33 PM

解碼Laravel效能瓶頸:優化技巧全面揭秘!

C++ 程式最佳化:時間複雜度降低技巧 C++ 程式最佳化:時間複雜度降低技巧 Jun 01, 2024 am 11:19 AM

C++ 程式最佳化:時間複雜度降低技巧

Win11新電腦收到後怎麼優化設定提升效能? Win11新電腦收到後怎麼優化設定提升效能? Mar 03, 2024 pm 09:01 PM

Win11新電腦收到後怎麼優化設定提升效能?

Vivox100s參數配置大揭密:處理器效能如何最佳化? Vivox100s參數配置大揭密:處理器效能如何最佳化? Mar 24, 2024 am 10:27 AM

Vivox100s參數配置大揭密:處理器效能如何最佳化?

優化WIN7系統開機啟動項目的操作方法 優化WIN7系統開機啟動項目的操作方法 Mar 26, 2024 pm 06:20 PM

優化WIN7系統開機啟動項目的操作方法

Laravel效能瓶頸揭秘:優化方案大揭秘! Laravel效能瓶頸揭秘:優化方案大揭秘! Mar 07, 2024 pm 01:30 PM

Laravel效能瓶頸揭秘:優化方案大揭秘!

See all articles