问题标签 [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.
firebase - Flutter Cloud Firestore 范围基础查询
我正在尝试做的事情:
我有一个名为“用户”的集合,其中每个用户(文档)都有自己的纬度和经度保存在该文件中。有了这个,我正在尝试做一个看起来像这样的查询。
错误:
PlatformException(PlatformException(错误,除 whereEqualTo() 之外的所有 where 过滤器必须位于同一字段上。但您在 'lat' 和 'lon' 上有过滤器,null))
问题:
- 我不能在我的文档中使用GeoPoint作为类型。为什么?因为如果我将基于此进行搜索,则如下所示:
_firestore
.collection('Users')
.where('geopoint', isGreaterThanOrEqualTo: myGeopoint)
.where('geopoint', isLessThanOrEqualTo: limitGeopoint)
不会起作用,因为它只会计算我的 GeoPoint 的纬度,而经度将被忽略。
我不能使用Geohash。如果以与 GeoPoints 相同的方式比较它们,它将无法向我显示所有结果,因为 geohash 的工作方式。
我知道一些包,比如firestore_helpers或geoflutterfire。但问题在于我不能限制结果集。我蚀刻得到所有这些或没有。或者,如果有任何想法如何限制它们,请告诉我(不,我不想限制收集结果,在将数据发送到其中一个包之前,请检查我的最后一个问题)
我试图做的事情:
我负责firebase 中使用的综合指数,我把它们做成了这样。
但是查询仍然无法正常工作,对于我的案例,我无法找到任何复合索引的示例,但尚未在颤振(或至少飞镖)中使用。
据我了解,我需要使用类似这样的 Compose Index。
但也不起作用。你有什么解决办法吗?我真的需要找到一种方法来解决这个问题。
java - JDBC:无法为我的表获取复合索引
我正在尝试列出我的数据库中所有表的所有索引(使用不特定于 RDBMS 的通用解决方案)
为了测试我的解决方案,我在 MS SQL Server DB 中有 2 个表tempdb
- 专卖店
- 员工
每个表都有一个 PK,并且该staffs
表还有一个名为 的唯一键列email
。stores
上的表上有一个复合索引store_id, store_name
。
以下是索引(来自 DBeaver 的屏幕截图)
代码片段如下
输出如下(不返回复合/复合索引)
我已阅读以下文档链接 [JDBC doc]
此外,请阅读有关同一主题的这些 stackoverflow 问题
我应该怎么做才能通过 JDBC 完成这项工作?我有一个选择是让数据库特定查询来获取索引列表并通过 JDBC 运行它们(但我不想走那条路)
mysql - “使用索引”和复合索引:A=, B=, C<=
尽管查询很简单,但下面的执行计划似乎令人失望和次优。
我正在使用 MySQL 5.7。这是小提琴(虽然它只提供 5.6)。
我们将使用Name-IsSequenced
二级索引。让我们尝试以下EXPLAIN
. (查询在小提琴中。打开“查看执行计划”以查看其EXPLAIN
结果。)
到目前为止,一切都很好。Using index condition
有道理:整个条件可以在预期的索引上解决Name-IsSequenced
,然后需要PK来获取剩余的数据SELECT *
。
Using index
如果我们只选择二级索引的一部分,我们应该能够改进它,对吧?(请注意,PK 始终是任何二级索引的一部分,但我们甚至可以通过id
在二级索引的末尾添加来确保这一点。结果应该是一样的。)
现在,结果是Using where; Using index
。等等,这……更糟?!我们减少了它的工作量,而计划表明它正在更加努力地工作。
Using index
应该是可以实现的。找到范围 where name=OrderCreated
,然后在其中找到子范围 where is_sequenced=0
,然后在里面找到子范围 where id<=3
。
奇怪的是,我还有其他实验(有更多数据),我可以Using index
通过更改id<=3
来获得id=3
(结合FORCE INDEX
以防止它更喜欢 PK)。我看不出差异的原因。(如果我们用 Fiddle 试试这个,它保持不变 - 可能是因为数据集小。)
谁能解释为什么执行计划没有表明二级索引的预期有效使用?有没有办法把它弄直?
db2 - 复合主键列的索引
我有一张桌子叫
但我一般使用 SQL 之类的
当我检查此 ID 的 SQL 计划时,不使用主键索引。
我需要为两列创建另一个索引吗?
数据库是 DB2
azure-cosmosdb - Cosmos 中可选字段的复合索引
我在 Cosmos DB 中有一个集合,其中包含不同类型(和模式)的文档:
我正在尝试创建一个复合索引[/type, /data/field3/[]/?]
,但遇到了一个问题:
google-cloud-platform - Google Cloud Datastore 中的复合索引
我有一个好听的名字'Wdr'。我的 index.yaml 文件看起来像这样。
我无法在下面运行这个 gql 查询。
我得到的错误是..
.yaml 文件中定义的索引是否不正确?还是我在这里做错了什么?
mysql - MySQL 可以使用其中一个字段是 WHERE 字段 > 0 的复合索引吗?
我们在很多地方都使用复合索引,而且效果很好。我们的平台有一个相对复杂的“报告生成器”,它可以根据用户的选择动态编写查询。我们根据常见查询选择索引,并且我们的复合索引通常与用户想要的内容很好地对齐。
例如(简化一吨),用户的报告将变成查询:
表格看起来像:
我知道 MySQL 将无法在如下查询中使用该索引:
我的问题是- MySQL 是否会使用复合索引进行如下查询:
当然,我知道我们可以在 上添加一个索引colB
,但在这种情况下这不是一个好的选择。我在这里进行了简化以使问题更清楚。实际上,我们在这个表中有 100 列,并且不能在每列上添加索引和可能的列变化,所以我试图弄清楚我们是否可以利用我们已经拥有的东西来加快速度那些边缘情况查询。
希望我说得好。提前致谢 :)
firebase - Firestore 集合具有时间戳字段时的索引查询
我有一个 Firestore 项目,其中我的收藏feed
有一个时间戳字段createdDate
。当我根据创建时间和其他字段查询提要时,我创建了一个Composite Index
包含时间戳字段。
在索引最佳实践文档中提到了以下内容。
如果您索引一个在集合中的文档之间按顺序增加或减少的字段(如时间戳),则对集合的最大写入速率为每秒 500 次写入。如果您不根据具有顺序值的字段进行查询,则可以使该字段免于索引以绕过此限制。
由于我已经在使用时间戳字段Composite Index
,因此我可以将该字段从Automatic Index Settings
. Composite Index
这将绕过集合中每秒 500 次写入的限制,还是在使用该字段时仍将应用它。请帮助我理解这一点。
mysql - 当 WHERE 子句中的一个字段为空时,MySQL 数据库是否使用复合索引?
假设我有一个由 fields 组成的复合索引(commentId, journalEntryId, owning_comment_id )
。
现在假设我有以下查询:
如您所见c.owning_comment_id
,应该是NULL
. 这种情况下数据库还会使用复合索引吗?