【发布时间】:2014-09-25 00:11:20
【问题描述】:
关于查询优化,我想知道下面这样的语句是否得到优化:
select *
from (
select *
from table1 t1
join table2 t2 using (entity_id)
order by t2.sort_order, t1.name
) as foo -- main query of object
where foo.name = ?; -- inserted
考虑到查询由依赖对象处理,但只是(对吗?)允许添加 WHERE 条件。我认为至少不会有很多数据被提取到你最喜欢的语言中,但如果这是一个充分的优化,我会重新考虑,也许数据库仍然需要一些时间来完成查询。
或者最好把那个查询拿出来,写一个单独的查询方法,里面有 where 可能还有一个 LIMIT 1 子句?
【问题讨论】:
-
请不要不要发布像这样的 DBMS 特定问题作为一般跨 DBMS 问题。如果它不是特定于 DBMS 的,只需使用
SQL标记。如果它是特定于 DBMS 的,选择一个标签 并使用它。当有一个用于 MySQL 和一个用于 PostgreSQL 时,您可以在此处将哪个答案标记为“正确”? -
@CraigRinger:你应该投票以“太宽泛”结束
-
@Flimzy:投票关闭为“太宽泛”...在删除指定
mysql的标签后。 -
@spencer7593:这个问题有两个相互冲突的标签:mysql 和 postgresql。
-
@Agi:有时这两个标签都适用......例如当询问如何在 mysql 的 postgres 中执行 X 时,反之亦然。一般规则是,每个问题都应该有一个具体的答案。您的问题需要两个答案。
标签: mysql sql postgresql sql-execution-plan