【发布时间】:2016-09-01 21:16:47
【问题描述】:
在 MySQL 和 sqlite3 中,1) 使用嵌套视图编写查询通常比从视图中复制代码并将其粘贴到更大的查询中要慢得多(来源:here,@ 987654322@,here,个人经验)。但是,2)我喜欢视图如何使 SQL 代码更短且更模块化,就像函数使代码更短且在其他语言中更模块化一样。最后,3)我很懒,我希望优化器为我完成规划连接、挑选索引和寻找效率的所有工作。我怀疑如果我想亲自动手并自己计划连接,我可以编写模块化且快速的查询,但我不想这样做。
因此,1) 速度、2) 模块化和3) 易用性,我似乎只能拥有两个。 我怎样才能同时拥有这三个?
【问题讨论】:
-
MySQL 5.7 在优化
VIEWs方面做得“更好”。你用的是什么版本? -
请注意,将视图粘贴到查询中会导致 子查询;您的 SQLite 示例使用两个完全不同的查询。 SQLite documents in excruciating details 在什么情况下无法优化子查询/视图。
-
@RickJames:我使用的是 5.7。我还注意到我的一个消息来源 (this guy) 发表于 2007 年,在 VIEWS 在 5.0 中首次成为 MySQL 的一部分之后不久,在 5.1 发布之前。所以你说的很有道理。
-
@CL :带有子查询的查询和两个不同的查询之间的区别让我无法理解,直到您指出来,所以谢谢。我想我需要阅读您提到的文档。
标签: mysql sqlite query-optimization modularity