【问题标题】:Newbie: OrientDB Basic SQL Query新手:OrientDB 基本 SQL 查询
【发布时间】:2015-01-15 11:47:08
【问题描述】:

OrientDB 1.7.10 版

我们正在运行以下两个查询,返回的记录数不同。

select from (select from sitedata ) where localdate='2014-09-24'
select from sitedata where  localdate='2014-09-24'

第一个查询返回 6 条记录,而第二个查询只返回一条记录。

Sitedata 是一个顶点,而 localdate 是一个具有 Date 数据类型的属性。 在 localdate 上也创建了一个索引。

从概念上讲,这两个查询有什么区别?在第一个场景中,我们在 RDBMS 世界中创建所谓的内联视图,然后对内联视图中的记录进行过滤。我们假设它必须在内部从数据库中获取所有记录,然后在内存中进行过滤。 在第二个查询中,直接过滤数据并使用索引。

【问题讨论】:

  • 更新:问题是因为索引。该索引是作为字典创建的,这导致了问题。更改索引解决了这个问题。

标签: sql orientdb


【解决方案1】:

不同之处在于在第一个查询中没有使用索引。 所以它对类站点数据进行全面扫描并应用过滤器

引擎无法使用索引,因为查询的目标是嵌套查询, 所以它评估嵌套查询,然后是外部查询,同时在内存中应用过滤

【讨论】:

  • 理论上这两个查询总是会产生相同的结果。在这种情况下,索引被意外地设置在 localdate 列上作为字典。删除索引使两个查询返回相同的数据集。因此,问题是由于索引。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多