问题标签 [composite-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 回答
199 浏览

google-app-engine - 新实体的 gae 数据存储复合索引重建/更新

我正在使用 GAE Datastore 复合索引,并在 2 天前成功创建了复合索引。索引处于“服务”状态。但是,索引不会针对新条目自动更新。我必须等待它自动更新,还是我必须使用gcloud preview datastore create-indexes INDEX_FILE [GLOBAL-FLAG …]命令手动触发?谢谢。

0 投票
1 回答
1085 浏览

sql - 多列上的PostgreSQL索引,什么时候太多了?

使用 PostgreSQL 9.6

我有一个表,其中包含一些我想过滤并按时间排序的值:

  • 时间戳(可能是在 UI 中选择的范围)
  • 状态字符串(目前只有几个已知值,也可以在 UI 中选择)
  • 上下文(UI 中数据的范围)

我想知道我是否应该:

  1. (上下文,状态)上的 btree 索引 + 时间上的单独索引
  2. 或(上下文、状态、时间)上的 btree 索引
  3. 或者每个都有一个 btree 索引?
  4. 或在(时间、状态、上下文)上的 btree 索引,用于小时间范围?

我怀疑数字 1 是最好的选择,上下文 + 状态将允许过滤掉值,然后它会扫描时间索引。我在我的数据上同时创建了 1 号并看到了一些改进,但是您如何在每种方法之间做出决定,是否有一些指导方针?

其中一个查询或多或少类似于:

另一个正在寻找时间范围。我看起来 postgres 使用多个索引,一个使用 (fk_context, severity, timestamp) 然后使用 (severity, time) 索引,但它也取决于限制。

0 投票
0 回答
126 浏览

laravel - Laravel 综合指数发行

我检查了这个解决方案。 #1071 - 指定的密钥太长;最大密钥长度为 1000 字节 但我想知道如何在 laravel 迁移文件中执行此操作,因为我不能直接在 mysql 中执行此操作,我需要一个可以更改迁移文件中索引列长度的解决方案。

0 投票
2 回答
100 浏览

mysql - 按 id 排序的复合索引上的并发查询非常慢

我有一个定义如下的表:

当使用以下 sql 有大约 10 个并发读取时:

它变慢了,大约需要 100 毫秒。

但是,如果我将其更改为

然后是正常的,需要几个毫秒。

我不明白为什么按 id 添加订单会使查询慢得多?谁能解释一下?

0 投票
1 回答
238 浏览

ruby-on-rails - 在创建复合唯一索引时提供文本列长度

我正在尝试在一个新表上创建一个索引,该索引需要agency_id(整数)和IP地址(文本)的唯一性。我知道我需要在索引上为IP. 但是我在将长度分配给列时遇到了问题IP

此代码返回错误

Mysql2::Error: 不正确的前缀键;使用的密钥部分不是字符串,使用的长度比密钥部分长,或者存储引擎不支持唯一前缀密钥: CREATE UNIQUE INDEX `index_whitelisted_ips_on_agency_id_and_ip` ON `whitelisted_ips` (`agency_id`(15), `ip`(15))

因为它试图将长度放在整数字段上。任何帮助,将不胜感激。

0 投票
1 回答
232 浏览

firebase - 在 Firestore [通配符] 中为点注释的动态路径创建索引?

我的收藏创​​建如下:

现在我写了一个查询如下

此查询工作正常,但是当我将 orderBy 添加到上述查询时,我被要求index为查询创建一个。

由于categoryName可以创建并且可以随时更改,我应该为每个 categoryName 添加索引,这将是数百个。

有什么方法可以创建通配符索引category.categoryName吗?

我尝试使用category.*,但这是不可接受的。希望能在这里找到一些帮助。

0 投票
0 回答
148 浏览

ruby-on-rails - 为日期字段栏添加索引

我们在项目中使用软删除。所以默认情况下,每个查询都会产生 where 条件 as"deleted_at is NULL"和使用其他一些 scopes(only_deleted) 查询时可能是"deleted_at is NOT NULL". 在这种情况下,是否需要添加带有deleted_at 列的复合索引。

假设我有一个模型用户并且用户属于特定项目,并且我正在尝试使用 [project_id, id] 添加复合索引。在这种情况下,我是否也必须包括 deleted_at ?

0 投票
1 回答
47 浏览

mysql - 为什么我的 MySQL 复合索引比同一列上的单个索引具有更少的基数?

我首先在我的表中创建了 2 个单独的索引:uid 和 time。然后我决定创建一个复合索引(uid,时间)。但是为什么复合索引(第 3 行)中 uid 的基数小于单个索引(第 1 行)中 uid 的基数?

0 投票
1 回答
181 浏览

mysql - MySQL 8 速度慢,复合索引下降

我有以下查询:

在 MySQL 8.0.15 中大约需要 0.8 秒。

我试过这样的索引:

以及像这样的:

和许多其他排列。我已经删除了它们并从头开始重做了很多次。Visible 本身确实有一个索引。

当我进行解释时,我看到它只在使用名为views_desc_id_desc_visible 的键时执行“使用位置”。从查询中删除可见并不会改变它的性能。删除两个 desc (因此:按视图排序,id)确实使它成为 0.0008 秒。

为什么这不快点?

更新 (从评论复制)

修复它。我只是不知道为什么以其他方式使用会忽略索引。

0 投票
0 回答
1034 浏览

mysql - 使用复合索引从快照恢复的 AWS RDS 超级慢

所以我有 2 个表,每个表都是 25GB。

表 t1 在单个列上有一个索引,而 t2 有一个复合索引。
我所有的查询都是使用索引的简单查询。

我的 t2 表

我的查询

解释结果:

我观察到的奇怪的事情是,当我从快照恢复数据库时,t2 会变得非常慢,延迟时间为 3000,但 t1 会在大约 5 分钟后变得正常(延迟时间为 100)。

我了解快照存储在 s3 中。但是为什么 t1 工作正常但 t2 超级慢?

更新:我手动检查并发现复合索引在那里。我怀疑我的 t2 综合索引甚至不起作用。

而且我认为不是内存缓冲区的问题,否则,经过我 5 分钟的密集查询测试后,t2 应该会恢复正常。