Postgresql 全文检索测试
Postgresql:10.11
测试表数据量:3亿
测试使用8c 16g 服务器
创建一张表:
create table nt_order (
id int PRIMARY KEY,
order_id text,
order_time timestamp without time zone,
info jsonb );
CREATE SEQUENCE nt_order_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
alter table nt_order alter column id set default nextval('nt_order_id_seq');
创建索引:
brin索引:create index idx_nt_order_brin on nt_order using brin (order_time);
全文检索:create index idx_gin_nt_order_info on nt_order using gin(to_tsvector('english',info));
为什么使用brin索引?
占空间小,比btree小千倍靠上
使用brin索引适用任何场景吗?
brin索引适合范围查询(与btree索引比差距较小),brin索引主要用于高度相关的数据,比如日期,其它类型有测试结果反映出来效果较差
造数据:
数据结构
记录行数:
数据表大小:
索引表大小:
测试:
1、全文检索,where组合条件查询(in语句查询)
SELECT id,order_time FROM nt_order WHERE to_tsvector('English', info) @@ to_tsquery('English','org^1 | org^2 | org^3') and to_tsvector('English', info) @@ to_tsquery('English','Aaron | Abbott | Abel | Abner | Abraham | Adair | Adam | Adolph | Adonis | Adrian | Ahern | Alan | Albert | Aldrich | Alexander | Alfred | Alger | Algernon | Allen | Alston | Alva | Alvis | Amos | Andre | Andrew | Andy | Angelo | Augus | Ansel | Antony | Antoine | Antonio | Archer | Archibald | Aries | Arlen | Armand | Armstrong | Arno | Arnold | Arthur | Arvin | Asa | Ashbur | Atwood | Aubrey | August | Augustine | Avery | Baird | Baldwin | Bancroft | Bard | Barlow | Barnett | Baron | Barret | Barry | Bartholomew | Bart | Barton | Bartley | Basil | Beacher | Beau | Beck | Ben | Benedict | Benjamin | Bennett | Benson | Berg | Berger | Bernard | Bernie | Bert | Berton | Bertram | Bevis | Bill | Bing | Bishop | Blair | Blake | BliTHE | Bob | Booth | Borg | Boris | Bowen | Boyce | Boyd | Bradley | Brady | Brandon | Brian | Broderick | Brook | Bruce | Bruno | Buck | Burgess | Burke | Burnell | Burton | Byron | Caesar | Calvin | Carey | Carl | Carr | Carter | Cash | Cecil | Cedric | Chad | Channing | Chapman | Charles | Chasel | Chester | Christian | Christopher | Clare | Clarence | Clark | Claude | Clement | Cleveland | Cliff | Clifford | Clyde | Colbert | Colby | Colin | Conrad | Corey | Cornelius | Craig | Curitis | Cyril | Dana | Daniel | Darcy | Darnell | Darren | Dave | David | Dean | Dempsey | Dennis | Derrick | Devin | Dick | Dominic | Don | Donahue | Donald | Drew | Duke | Duncan | Dunn | Dwight | Dylan | Earl | Ed | Eden | Edgar | Edmund | Edison | Edward | Edwiin | Egbert | Eli | Elijah | Elliot | Ellis | Elmer | Elroy | Elton | Elvis | Emmanuel | Enoch | Eric | Ernest | Eugene | Evan | Fabian | Felix | Fitzgerald | Ford | Frank | Franklin | Frederic | Gale | Gary | Gavin | Gene | Geoffrey | Geoff | George | Gerald | Giles | Glenn | Gordon | GREg | Griffith | Grover | Guy | Hale | Haley | Hamiltion | Hardy | Harlan | Harley | Harold | Harry | Harvey | Hayden | Henry | Herman | Hilary | Hiram | Hobart | Hogan | Horace | Howar | Hubery | Hugh | Hugo | Humphrey | Hunter | Hyman | Ian | Ingram | Ira | Isaac | Ivan | Ives | Jack | Jacob | James | Jared | Jason | Jay | Jeff | Jeremy | Jerome | Jerry | Jesse | Jim | Jo | John | Jonas | Jonathan | Joseph | Joshua | Joyce | Julian | Julius | Justin | Keith | Kelly | Ken | Kent | Kerr | Kerwin | Kim | King | Kirk | Kyle | Lance | Larry | Lawrence | Leif | Len | Lennon | Leo | Les | Lester | Levi | Lewis | Lionel | Lou | Louis | Lucien | LuTHEr | Lyle | Lyndon | Lynn | Magee | Mandel | Marcus | Marico | Marlon | Marsh | Marshall | Martin | Marvin | Matt | Max | Maximilian | Meredith | Merle | Merlin | Mick | Mike | Miles | Milo | Monroe | Montague | Moore | Morgan | Mortimer | Morton | Moses | Murphy | Murray | Myron | Nat | Nathan | Nathaniel | Neil | Nelson | Newman | Nicholas | Nick | Nigel | Noah | Noel | Norman | Norton | Ogden | Oliver | Omar | Osborn | Oscar | Osmond | Oswald | Otis | Otto | Owen | Page | Parker | Paddy | Paul | Payne | Perry | Pete | Peter | Phil | Philip | Porter | Prescott | Primo | Quincy | Quinn | Quintion | Rachel | Ralap | Randolph | Reg | Regan | Reginald | Reuben | Rex | Robert | Robin | Rock | Rod | Roderick | Rodney | Ron | Ronald | Rory | Roy | Rudolf | Rupert | Ryan | Sam | Samuel | Sandy | Saxon | Scott | Sean | Sebastian | Sid | Sidney | Silvester | Simon') and order_time between '2019-12-12 19:30:49' and '2019-12-12 19:32:49' limit 20 offset 10;
2、加排序
小结:查询速度相对较快,但是加上order by会明显拖慢整个速度,下表是加order by和不加order by的速度对比
Where条件过滤出来的记录行数 |
不加 order by 的响应时间 |
加 order by 的相应时间 |
---|---|---|
2146 | 31ms | 127ms |
4233 | 31ms | 208ms |
6380 | 31ms | 288ms |
8485 | 32ms | 370ms |
10578 | 32ms | 430ms |
Postgresql 全文检索测试相关推荐
- PostgreSQL 全文检索加速 快到没有朋友 - RUM索引接口(潘多拉魔盒)
PostgreSQL 全文检索加速 快到没有朋友 - RUM索引接口(潘多拉魔盒) 作者 digoal 日期 2016-10-19 标签 PostgreSQL , RUM , GIN , full t ...
- Postgresql 压力测试 pgbench 与 准不准
任何数据库都有压力测试的需求,每种数据库的压力测试都是要证明这个数据库本身在某种硬件的情况下,能达到的一种可以承受的工作上的压力. 那么有一个问题压力测试的数据准吗? 其实实际上我个人的回答是, 根 ...
- Mac安装PostgreSQL和测试安装结果
为什么80%的码农都做不了架构师?>>> 安装:brew install postgresql -v 这一步会安装它和它的各种依赖包,并且初始化元数据库内容 添加到开机启动:l ...
- 用PostgreSQL 做实时高效 搜索引擎 - 全文检索、模糊查询、正则查询、相似查询、ADHOC查询...
用PostgreSQL 做实时高效 搜索引擎 - 全文检索.模糊查询.正则查询.相似查询.ADHOC查询 作者 digoal 日期 2017-12-05 标签 PostgreSQL , 搜索引擎 , ...
- PostgreSQL 实时高效搜索 - 全文检索、模糊查询、正则查询、相似查询、ADHOC查询...
标签 PostgreSQL , 搜索引擎 , GIN , ranking , high light , 全文检索 , 模糊查询 , 正则查询 , 相似查询 , ADHOC查询 背景 字符串搜索是非常常 ...
- PostgreSQL何以支持丰富的NoSQL特性?
一.引言 上篇文章 介绍了PostgreSQL的典型高级SQL特性,PostgreSQL不仅是关系型数据库,同时支持丰富的NoSQL特性,本文将从 <PostgreSQL实战> 一书的&q ...
- sphinx结合scws的mysql全文检索
主要目的:打造千万级数据全文搜索的数据库,提升查询效率 系统环境 主机名 IP地址 相关服务 版本 SQL 172.169.18.128 mysql5.6(主) Sphinx 172.169.18.2 ...
- PostgreSQL的json和jsonb比较
PostgreSQL何以支持丰富的NoSQL特性? 一.引言 PostgreSQL不仅是关系型数据库,同时支持丰富的NoSQL特性 本文主要包含以下三部分内容: PostgreSQL的 JSON和JS ...
- PostgreSQL 179个场景
案例 1.<多字段,任意组合(0建模) - 毫秒级实时圈人 - 最佳实践> 2.<IoT(物联网)极限写入.消费 最佳实践 - 块级(ctid)扫描> 3.数据采样和脱敏实践 ...
最新文章
- php如何设定隐藏四位号码,PHP问题:php手机号码中间四位如何隐藏?
- Mac下如何显示隐藏文件/文件夹
- 【渝粤题库】国家开放大学2021春2143西方经济学题目
- 学习javascript语言精粹的笔记
- alert 回调_立即执行函数与回调函数
- Google 正在“跟踪”你
- 我是如何从零基础自学到找到工作经过
- 定时器 setTimeout setInterval
- TensorFlow开发者证书 中文手册
- matlab信号与系统论文,基于MATLAB的《信号与系统》课程教学研究
- 10W+ 字C语言从入门到精通保姆级教程(2021版上)
- 基于单片机控制的电动智能小车
- 体重测试仪软件,一键校准身高体重测量仪
- Android知识图谱(持续更新中)
- Jquery-微博发布案例
- 删除2345输入法和智能云输入法这两个狗屁玩意的注册表
- 锂电池】关于4.2V锂电池充电IC的一些记录
- 华为交换机配置基础命令
- 计算机网络基础以及进程查看管理
- u盘有图标计算机显示没有,电脑没插u盘却显示u盘图标是怎么回事?
热门文章
- Android中Kotlin创建PDF
- springtools安装失败_安装Spring Tool Suite(STS)并打开后有非常多的错误
- 【redis】闲得无聊,来聊聊当下爆火的 redis集群,顺便搭一个玩玩呗
- 面向对象设计5大原则
- 亚马逊选品有哪些技巧?如何才能做出爆款产品?
- XML外部实体注入(XEE)的原理和应用
- 【error:mysql】Data truncated for column ‘present_iri‘ at row 478
- 纯米科技发布中高端智能厨电品牌TOKIT
- 积分图求局部均值,方差,标准差
- Relational Graph Learning on Visual and Kinematics Embeddings for Accurate Gesture Recognition in Ro