Text[] 数组列的表索引

2024-01-08

我有一个 PostgreSQL 数据库表text[](数组)在其上定义的列。我使用这些列以这种方式搜索数据库中的特定记录:

select obj from business
where ((('street' = ANY (address_line_1)
    and 'a_city' = ANY (city)
    and 'a_state' = ANY (state))
or    ('street' = ANY (address_line_1)
    and '1234' = ANY (zip_code)))
and ('a_business_name' = ANY (business_name)
    or 'a_website' = ANY (website_url)
    or array['123'] && phone_numbers))

我遇到的问题是,对于大约 100 万条记录,查询变得非常慢。我的问题很简单,数组列是否有不同类型的索引?有谁知道在这种情况下创建的最佳索引类型? (假设有不同的类型)。

以防万一,这是explain analyze回复:

"Seq Scan on business  (cost=0.00..207254.51 rows=1 width=32) (actual time=18850.462..18850.462 rows=0 loops=1)"
"  Filter: (('a'::text = ANY (address_line_1)) AND (('a'::text = ANY (business_name)) OR ('a'::text = ANY (website_url)) OR ('{123}'::text[] && phone_numbers)) AND ((('a'::text = ANY (city)) AND ('a'::text = ANY (state))) OR ('1234'::text = ANY (zip_code))))"
"  Rows Removed by Filter: 900506"
"Total runtime: 18850.523 ms"

提前致谢!


您可以使用杜松子酒指数 http://www.postgresql.org/docs/current/static/gin.html有效提高阵列性能。
结合使用它数组运算符 http://www.postgresql.org/docs/current/static/functions-array.html.

例如:

CREATE INDEX business_address_line_1_idx ON business USING GIN (address_line_1);

对条件中涉及的所有数组列执行此操作。

可能值得考虑标准化您的架构。也许将多个条目拆分到一个单独的(1:n 或 n:m)表中会更好。从长远来看,这通常是有效的,即使一开始看起来需要做更多的工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Text[] 数组列的表索引 的相关文章

随机推荐

  • 设置默认日期时间格式c#

    有没有办法设置或覆盖整个应用程序的默认日期时间格式 我正在用 C Net MVC 1 0 编写一个应用程序 并使用大量泛型和反射 如果我可以将默认的 DateTime ToString 格式重写为 dd MMM yyyy 则会简单得多 当站
  • WPF:使用旋转方块进行碰撞检测

    参考这个编程游戏 https stackoverflow com questions 505040 developing a robocode type game with net for a school assignment我目前正在建
  • PHP 的怪癖和陷阱 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • + 运算符与 parseFloat

    实施例1 http knockoutjs com documentation extenders html淘汰扩展器页面的 描述了一种对用户输入进行四舍五入并确保它只是数字的方法 它工作得很好 但是查看源代码 他们做了一件我不明白的奇怪的事
  • PageRequest 构造函数已被弃用

    我正在使用 Spring Data Commons v2 快照 并且我看到PageRequest已被弃用 这似乎发生在M1 http docs spring io spring data commons docs 2 0 0 M1 api
  • 通过 Connector/NET 使用 MySQL 的 C#

    我正在 C 4 0 Framework 中开发 CMS 应用程序 它连接到远程服务器上的 MySQL 数据库 5 0 95 由 MySQL 连接器 6 5 4 提供 我在执行查询时遇到问题 例如 我的连接字符串 Server Options
  • 在jar文件中的类中调用静态方法[重复]

    这个问题在这里已经有答案了 我想在 jar 文件中的类中执行特定方法 该文件没有 main 方法 使用我尝试过的 java 命令java cp classes jar com example test Application但我收到这个错误
  • QTreeWidget editItem 失败并显示“编辑:编辑失败”

    我有一个QTreeWidgetItem添加到QTreeWidget QTreeWidgetItem item new QTreeWidgetItem ui gt trwPairs item gt setFlags item gt flags
  • 使用 Matplotlib 模拟 Origin 中的瀑布图

    我正在尝试使用 Python 和 Matplotlib 创建 Origin 制作的瀑布图 见下图 or 一般方案对我来说很有意义 你从一个 2D 矩阵开始 就像你想制作一个曲面图一样 然后你可以遵循中显示的任何食谱StackOverflow
  • 为什么 unsigned int 还是有符号的? [复制]

    这个问题在这里已经有答案了 我创建了一个 unsigned int 和 unsigned char 然后我分配 10 值 并且 char 保持无符号并给我一个值 246 但 unsigned int 取 10 值 include
  • 从结构体向量中,获取一个收集每个结构体的字段之一的向量

    假设我有以下结构 struct Point double X Y Z 和以下向量 std vector
  • 如何测试某个值是否在某个范围内?

    我希望能够创建一个Range http doc rust lang org std ops struct Range html然后测试变量是否包含在该范围内 看起来像这样的东西 fn main let a 3 5 assert a cont
  • Grails 3.0.9:Spock 集成测试的 @Rollback 注释不起作用

    我目前正在为我们的项目进行一些集成 或功能性 我不是真正的 QA 而是后端开发人员 所以我可能会草率地使用术语 REST 测试 我们正在使用 Grails 3 0 9 Spock Framework 1 0 Groovy 2 4 和 Pos
  • 带有模式android的EditText输入

    我有一个 EditText 我必须接受字母数字用户输入的特定于模式和连字符的输入 会自动插入 XXX XXX XXXX 如何做到这一点 安卓有什么模式工具吗 你可以通过以下方式实现图案文本观察者 https github com zsave
  • 读取csv文件并将df写入excel并使用文本换行

    我正在尝试获得以下输出 但除标题外 所有行和列均采用文本换行 import pandas as pd import pandas io formats style import os from pandas import ExcelWrit
  • 如何在 2D 和 3D 投影之间切换

    我有一个 matplotlib 图 我希望能够在 2D 和 3D 投影之间切换 我可以从 2D 转到 3D 但我似乎不知道如何转到另一条路 例子 import numpy as np from mpl toolkits mplot3d im
  • Eclipse - 更改自动完成建议的顺序

    我看到以前有人问过这个问题 但我似乎找不到我想要的 目前 在 窗口 gt 首选项 gt Java gt 编辑器 gt 内容辅助 中 我的排序建议设置为 按相关性 然而 他们似乎仍然按字母顺序排序 例如 每当我有一个HashMap我开始打字m
  • 如何将数组元素扩展为函数的单独参数

    我有一组具有动态值的颜色 这取决于数据库 现在 函数中需要这些值 该函数仅采用像此函数那样的值 para1 para2 para3 para4 其中 param1 到 param4 是数组中的颜色值 问题是我如何以上述格式将这些值解析为该函
  • 无法使用 BigQuery Python API 设置目标表

    我最近在使用 Python API 时收到以下 BigQuery 错误 google api core exceptions BadRequest 400 无法为脚本设置co nfiguration query destinationTab
  • Text[] 数组列的表索引

    我有一个 PostgreSQL 数据库表text 数组 在其上定义的列 我使用这些列以这种方式搜索数据库中的特定记录 select obj from business where street ANY address line 1 and