问题标签 [partial-index]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
94 浏览

indexing - 如何在 cockroach DB 中确保 NULL 值的唯一性

我有一个帐户表,它生成带有序列的唯一键。它用于为帐户和帐户/用户对生成唯一身份。

我从 pgsql 尝试了以下内容:

但蟑螂不支持这两种情况。

是否有另一种方法可以确保 NULL 值的唯一性?

我还有一个不同的 UNIQUE 索引,user_id以允许为没有帐户的用户生成唯一 ID。

0 投票
2 回答
1701 浏览

postgresql - 这是在 Postgres 中创建部分索引的正确方法吗?

我们有一个包含 400 万条记录的表,对于一个特定的常用用例,我们只对特定 salesforce userType 为“标准”的记录感兴趣,这些记录在 400 万条中只有大约 10,000 条。可能存在的其他用户类型是“PowerPartner”、“CSPLitePortal”、“CustomerSuccess”、“PowerCustomerSuccess”和“CsnOnly”。

因此,对于这个用例,我认为根据文档创建部分索引会更好。

所以我打算创建这个部分索引来加快对用户类型为“标准”的记录的查询,并防止来自网络的请求超时:

查找查询将是

您能否确认这是否是创建部分索引的正确方法?这会有很大帮助。

0 投票
1 回答
395 浏览

mongodb - MongoDB和部分索引:在空日期过滤时避免过滤阶段

我正在尽我所能优化数据库查找。据我了解,我的目标应该是针对唯一阶段是 IXScan 的获胜计划。但是我有一个包含日期键的字段,似乎我无法构建一个复合索引,在过滤“空”日期值时能够直接查找文档。

我的过滤器查询如下

我尝试构建一个与该查询完全对应的部分索引(为了也节省一些索引内存,因为我知道我永远不必显示例如软删除的文档)

(请注意,代码是用 Ruby 编写的,但使用 Mongoid 可以毫无问题地转换为 MongoDB 语言)

除了过滤器之外,这似乎运作良好soft_deleted_at,因为我的获胜计划看起来像

所以在这里我有这个额外的阶段"stage"=>"FETCH", "filter"=>{"soft_deleted_at"=>{"$eq"=>nil}},,它基本上是手动过滤我的日期字段的空值。我希望这已经在部分索引中并且不需要更多过滤......我错了吗?

有什么办法可以避免这个额外的过滤阶段?

0 投票
0 回答
124 浏览

postgresql - PostgreSQL 在部分索引中使用时间戳差异进行 upsert

我需要获取实时数据并将其放入 Postgres 表中,以便将列 oid 和 rcv_time 分别与新收到的列进行比较。

如果这个oid之前已经被插入过,并且接收到的时间超过两个小时就应该插入,否则只需要根据oid更新

所以我想创建一个如下所示的部分索引,将时间戳差异表示为条件唯一约束:

作为示例,我的 upsert 查询将是:

但是当我尝试创建索引时,会发生以下错误:

我还尝试通过将 where 子句放在 upsert 查询中而不是在 oid 上创建唯一约束来解决没有部分索引的问题。

但它不允许我拥有多个相同的 oid 并且总是进行更新。

我该如何解决这个问题?

0 投票
1 回答
176 浏览

database - PostgreSQL 中的部分索引何时更新

我正在对我们项目中最大的表之一进行性能调整。在阅读索引时,我遇到了 PostgreSQL 中的部分索引。将索引仅放在经常访问的行上听起来是一个非常好的主意。

不过,我无法弄清楚部分索引是如何更新的。例如,我有一个包含以下列的表:

ENQUEUED我们非常频繁地搜索处于状态的记录。如果我们在其上添加部分索引,(task_uuid, task_status)将构建一个唯一键并提高性能。但是,我想知道,当我们更新记录RUNNING状态时,记录更新时会发生什么。(task_uuid, task_status)仍然是唯一的,但它会从部分索引中删除吗?因为记录不符合条件。

0 投票
2 回答
647 浏览

postgresql - 在 Postgres 中索引部分索引的条件

我试图推断 Postgres 部分索引是如何存储在 Postgres 中的。假设我创建一个这样的索引

为了快速运行查询

Postgres 显然存储了一个建立在条件表达式定义order_nr的表子集上的索引。但是,我有几个与此相关的问题:ordersbilled is not true

  1. Postgres 是否在内部存储另一个索引billed is not true以快速找到与部分索引关联的行?
  2. 如果 (1) 不是这种情况,如果我在 上创建单独的索引,是否会使上面的查询运行得更快billed is not true?(假设一个大表和几行billed is true

编辑:由于布尔索引很少使用,我基于文档的示例查询并不是最好的,但请在任何条件表达式的上下文中考虑我的问题。

0 投票
1 回答
32 浏览

postgresql - 在大部分为 0 的列上建立索引不起作用

我一直在尝试在我的表上使用索引时遇到麻烦。

对于表items,我有一个名为market. 如果market= 0,则不出售 - 如果值大于 0(例如 100),则出售,价格为 100 美元。

但是,我有数千万行不出售的物品。一次可能有大约 1000 件左右的商品在出售(有价格)。

我正在尝试快速查询以选择市场大于 0 的所有行;

SELECT market FROM items WHERE market > 0.

但是,这需要相对较长的时间,并且使用 SEQ 扫描而不是我拥有的索引market。任何帮助将不胜感激,或者我的问题的另一种方法。

0 投票
1 回答
51 浏览

postgresql - 如何在 PostgreSQL 中索引多语言实体

在这里,我正在创建 table product_feature_text,与 table 具有 1:N 关系product。由于应用程序必须支持多种用户语言,lang_code因此添加了一个列来将英语文本与其他语言文本区分开来。

由于我想以每种语言按字母顺序展示产品功能,因此我创建了四个部分索引,它们的特定collate. 预计所有产品功能都具有title四种语言,lang_code = 'ES'例如,将有 25% 的行带有 。

这是对真实案例的过度简化,但足以描述情况。

这是该案例的最佳索引方法吗?

评论的附录:一个典型的查询是

哪里product_id可能有任何东西。

0 投票
2 回答
427 浏览

postgresql - 使用部分索引更新和插入性能

我有不同的查询来从大表(大约 100-200M 行)中获取数据。我已经为我的表创建了部分索引,使用不同的谓词来适应查询,因为我知道每个查询。例如类似这样的表:

并且有两种类型的查询:

对于这些查询,我创建了部分索引:

  1. 对于 state_id = 10(新联系人)
  1. 对于 state_id = 20(可用联系人)

对我来说,这些部分索引比单个索引要快。

那么更新和插入性能呢?如果我更改 state_id = 20 的行,它会仅影响索引 2(对于可用联系人)还是它们都会受到影响?

0 投票
0 回答
316 浏览

ruby-on-rails - 轨道迁移部分索引没有按预期工作

我有一个 Rails 迁移脚本:

但它会像这样生成索引:

没有 where 条件。导轨版本:~> 4.2.11。PostgreSQL 9.6 数据库