问题标签 [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.
indexing - 如何在 cockroach DB 中确保 NULL 值的唯一性
我有一个帐户表,它生成带有序列的唯一键。它用于为帐户和帐户/用户对生成唯一身份。
我从 pgsql 尝试了以下内容:
和
但蟑螂不支持这两种情况。
是否有另一种方法可以确保 NULL 值的唯一性?
我还有一个不同的 UNIQUE 索引,user_id
以允许为没有帐户的用户生成唯一 ID。
postgresql - 这是在 Postgres 中创建部分索引的正确方法吗?
我们有一个包含 400 万条记录的表,对于一个特定的常用用例,我们只对特定 salesforce userType 为“标准”的记录感兴趣,这些记录在 400 万条中只有大约 10,000 条。可能存在的其他用户类型是“PowerPartner”、“CSPLitePortal”、“CustomerSuccess”、“PowerCustomerSuccess”和“CsnOnly”。
因此,对于这个用例,我认为根据文档创建部分索引会更好。
所以我打算创建这个部分索引来加快对用户类型为“标准”的记录的查询,并防止来自网络的请求超时:
查找查询将是
您能否确认这是否是创建部分索引的正确方法?这会有很大帮助。
mongodb - MongoDB和部分索引:在空日期过滤时避免过滤阶段
我正在尽我所能优化数据库查找。据我了解,我的目标应该是针对唯一阶段是 IXScan 的获胜计划。但是我有一个包含日期键的字段,似乎我无法构建一个复合索引,在过滤“空”日期值时能够直接查找文档。
我的过滤器查询如下
我尝试构建一个与该查询完全对应的部分索引(为了也节省一些索引内存,因为我知道我永远不必显示例如软删除的文档)
(请注意,代码是用 Ruby 编写的,但使用 Mongoid 可以毫无问题地转换为 MongoDB 语言)
除了过滤器之外,这似乎运作良好soft_deleted_at
,因为我的获胜计划看起来像
所以在这里我有这个额外的阶段"stage"=>"FETCH", "filter"=>{"soft_deleted_at"=>{"$eq"=>nil}},
,它基本上是手动过滤我的日期字段的空值。我希望这已经在部分索引中并且不需要更多过滤......我错了吗?
有什么办法可以避免这个额外的过滤阶段?
postgresql - PostgreSQL 在部分索引中使用时间戳差异进行 upsert
我需要获取实时数据并将其放入 Postgres 表中,以便将列 oid 和 rcv_time 分别与新收到的列进行比较。
如果这个oid之前已经被插入过,并且接收到的时间超过两个小时就应该插入,否则只需要根据oid更新
所以我想创建一个如下所示的部分索引,将时间戳差异表示为条件唯一约束:
作为示例,我的 upsert 查询将是:
但是当我尝试创建索引时,会发生以下错误:
我还尝试通过将 where 子句放在 upsert 查询中而不是在 oid 上创建唯一约束来解决没有部分索引的问题。
但它不允许我拥有多个相同的 oid 并且总是进行更新。
我该如何解决这个问题?
database - PostgreSQL 中的部分索引何时更新
我正在对我们项目中最大的表之一进行性能调整。在阅读索引时,我遇到了 PostgreSQL 中的部分索引。将索引仅放在经常访问的行上听起来是一个非常好的主意。
不过,我无法弄清楚部分索引是如何更新的。例如,我有一个包含以下列的表:
ENQUEUED
我们非常频繁地搜索处于状态的记录。如果我们在其上添加部分索引,(task_uuid, task_status)
将构建一个唯一键并提高性能。但是,我想知道,当我们更新记录RUNNING
状态时,记录更新时会发生什么。(task_uuid, task_status)
仍然是唯一的,但它会从部分索引中删除吗?因为记录不符合条件。
postgresql - 在 Postgres 中索引部分索引的条件
我试图推断 Postgres 部分索引是如何存储在 Postgres 中的。假设我创建一个这样的索引
为了快速运行查询
Postgres 显然存储了一个建立在条件表达式定义order_nr
的表子集上的索引。但是,我有几个与此相关的问题:orders
billed is not true
- Postgres 是否在内部存储另一个索引
billed is not true
以快速找到与部分索引关联的行? - 如果 (1) 不是这种情况,如果我在 上创建单独的索引,是否会使上面的查询运行得更快
billed is not true
?(假设一个大表和几行billed is true
)
编辑:由于布尔索引很少使用,我基于文档的示例查询并不是最好的,但请在任何条件表达式的上下文中考虑我的问题。
postgresql - 在大部分为 0 的列上建立索引不起作用
我一直在尝试在我的表上使用索引时遇到麻烦。
对于表items
,我有一个名为market
. 如果market
= 0,则不出售 - 如果值大于 0(例如 100),则出售,价格为 100 美元。
但是,我有数千万行不出售的物品。一次可能有大约 1000 件左右的商品在出售(有价格)。
我正在尝试快速查询以选择市场大于 0 的所有行;
SELECT market FROM items WHERE market > 0
.
但是,这需要相对较长的时间,并且使用 SEQ 扫描而不是我拥有的索引market
。任何帮助将不胜感激,或者我的问题的另一种方法。
postgresql - 如何在 PostgreSQL 中索引多语言实体
在这里,我正在创建 table product_feature_text
,与 table 具有 1:N 关系product
。由于应用程序必须支持多种用户语言,lang_code
因此添加了一个列来将英语文本与其他语言文本区分开来。
由于我想以每种语言按字母顺序展示产品功能,因此我创建了四个部分索引,它们的特定collate
. 预计所有产品功能都具有title
四种语言,lang_code = 'ES'
例如,将有 25% 的行带有 。
这是对真实案例的过度简化,但足以描述情况。
这是该案例的最佳索引方法吗?
评论的附录:一个典型的查询是
哪里product_id
可能有任何东西。
postgresql - 使用部分索引更新和插入性能
我有不同的查询来从大表(大约 100-200M 行)中获取数据。我已经为我的表创建了部分索引,使用不同的谓词来适应查询,因为我知道每个查询。例如类似这样的表:
并且有两种类型的查询:
和
对于这些查询,我创建了部分索引:
- 对于 state_id = 10(新联系人)
- 对于 state_id = 20(可用联系人)
对我来说,这些部分索引比单个索引要快。
那么更新和插入性能呢?如果我更改 state_id = 20 的行,它会仅影响索引 2(对于可用联系人)还是它们都会受到影响?
ruby-on-rails - 轨道迁移部分索引没有按预期工作
我有一个 Rails 迁移脚本:
但它会像这样生成索引:
没有 where 条件。导轨版本:~> 4.2.11。PostgreSQL 9.6 数据库