【发布时间】:2011-11-09 17:24:17
【问题描述】:
基本上,我有多个这样的查询:
SELECT a, b, c FROM (LONG QUERY) X WHERE ...
问题是,我经常使用这个 LONG QUERY。我希望给这个子查询一个别名,主要是:
- 缩短和简化查询(同时减少错误和代码重复)
- 可能优化性能。 (我相信这是通过mysql查询缓存默认完成的)
到目前为止,我一直是这样存储的:
variable = LONG QUERY;
Query("SELECT a, b, c FROM ("+variable+") X WHERE ...");
这还不错。我正在寻找一种在内部使用 mysql 执行此操作的方法。
是否有可能创建一个不会产生任何开销的简单只读视图,这样我就可以在任何地方做?我相信这是一种更合适且更易读的方式。
SELECT a, b, c FROM myTable WHERE ...
【问题讨论】:
-
每件事都会有一定程度的开销。 IME、SQL 不适合 Java/.NET/等代码重用。 SQL 缓存整个查询,而不是部分查询(包括区分大小写)。
-
我相信我听说过mySQL也缓存子查询。但是,我不知道这在多大程度上是正确的。
-
MySQL,也不是一般的 SQL(Oracle、SQL Server,也可能是 PostgreSQL)不缓存查询的一部分。
标签: mysql sql caching view alias