gpt4 book ai didi

sqlite - 置换 SQLite View ,它返回太多行,无需 where 子句即可调用

转载 作者:行者123 更新时间:2023-12-03 19:33:04 26 4
gpt4 key购买 nike

我正在开发一个由 SQLite 数据库支持的 C++ 程序。该数据库包含文档表、文档元素和文档边界(即位于文档边界上的文档元素集)。文档是在运行时创建的。

该程序支持合并文档的基本操作,它使用源文档中的元素的并集创建一个新文档,以及一个新边界,其元素是根据一组不同的规则从源文档的边界中选择的不同的合并类型。规则也存储在一个表中。

当我处理数据库模式时,我意识到我可以创建一个 SQLite View ,它将规则表连接到边界表并生成所有边界元素的列表,如果你根据每个文档将每个文档连接到其他文档,这些元素将出现在结果中到每个合并计划。

显然,这个 View 会返回太多的结果,无法直接运行;订购 O(D*D*B*M)在哪里 D=count(Documents), B=count(Boundary elements), and M=count(MergeTypes) .但是我认为,如果您在另一个查询中使用带有 where 子句将结果过滤为 2 个文档和 1 个合并类型的 View ,SQLite 将不会创建整个 View 结果,只会创建与 where 子句有关的结果。

这是一个正确的假设吗?或者仅仅存在一个具有潜在巨大结果集的 View 会给数据库带来问题吗?

最佳答案

有些查询必须在其结果被读取之前完全计算(例如,使用 ORDER BY 的查询)。
但如果可能,查询优化器会尝试将 View 合并到外部查询中,即合并到 flatten。它。

关于sqlite - 置换 SQLite View ,它返回太多行,无需 where 子句即可调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38641738/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com