gpt4 book ai didi

sql - 大型数据库查询 : optimisation

转载 作者:搜寻专家 更新时间:2023-10-30 23:31:43 26 4
gpt4 key购买 nike

我有一个 Product 模型,带有一个 description 属性。创建新产品时,我需要查找在描述中有相应引用的产品,并在它们之间创建一个 Link 对象。

例子:

Product 1
Description: ".... 58274072 ... "

我需要查找描述中包含 58274072 的所有产品:

similar_products = Product.where("description like ?", "%58274072%")

我有两个问题:

  • 鉴于我们拥有大量产品记录,此查询可能需要几秒钟才能运行。有没有更快的查询方式?
  • 我在批处理作业中运行此查询,因此可能有 10 个作业同时运行并尝试执行此查询。单独对一个查询进行基准测试时,假设运行需要 2 秒。批量运行时,最多需要 6 秒。会不会是数据库连接数太低造成的?

我该如何解决这些问题?

最佳答案

要优化 LIKE 上的索引,您应该使用 trigam 扩展。

为此,您需要安装模块 pg_trgm,它为 GIN 和 GiST 三元组索引提供运算符类以支持所有 LIKE 和 ILIKE 模式:

示例索引:

CREATE INDEX ON product USING gin (description gin_trgm_ops);

或:

CREATE INDEX ON product USING gist (description gist_trgm_ops);

您需要在 GIN 或 GiST 之间做出选择...GIN 查询速度更快,但创建速度更慢,更新速度更慢,并且通常比 GiST 更大。

如果它能解决您的问题,请试试这个。

关于sql - 大型数据库查询 : optimisation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48645563/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com