跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 在百万、千万级数据的一张 PostgreSQL 表中如何高效搜索一个指定的内容
未分類
24 11 月 2020

在百万、千万级数据的一张 PostgreSQL 表中如何高效搜索一个指定的内容

在百万、千万级数据的一张 PostgreSQL 表中如何高效搜索一个指定的内容

資深大佬 : bandian 1

待搜索的字段为 json 类型,要做的是模糊匹配。

如果直接使用 like 匹配,性能上感觉应该会爆炸,不知道有没有什么原生的比较高效或者耗时短的查询方式。

大佬有話說 (3)

  • 資深大佬 : angryfish

    mysql 可以创建虚拟字段,映射要查询的 json 字段,不知道 postgresql 有没有

  • 資深大佬 : abcfyk

    要么牺牲写速度,解析 json 出来再写,
    要么牺牲读速度,直接存 json,读的时候解析

    非要存 pg,就这两个方向,其他的优化都是隔靴搔痒

  • 資深大佬 : MoYi123

    不清楚你具体要怎样做模糊查询,举几种常见场景
    1. 查询 json 中的第一层存在 key 为 1 的行,比如{“1″:”abc”},需要在 json 列建 gin 索引
    create index test_data1_gin on test using gin (data1);
    select * from test where data1 ? ‘1’;

    2. 查询 json 中某个具体键的值,比如{‘age’:18},需要对 json->>’age’建索引
    create index test_data1_btree on test using btree ((data1 ->> ‘age’));
    select * from test where data1 ->> ‘age’ = 18;

    3. like ‘”:2’ 比如'{“1”:2}’, 那这一列不应该存为 json,应该存为 text,然后加上 gin 索引

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具