in oracle :
在一个查询中有许多条件相同的子查询,但需要的值不同。例如:
SQL 1:
select
(select u.name from user u where u.id = i.id) as name,
(select u.nick_name from user u where u.id = i.id) as nick_name,
(select u.create_date from user u where u.id = i.id) as create_date,
i.title as title,
i.content as content
from info i
select
u.name as name,
u.nick_name as nick_name,
u.create_date as create_date,
i.title as title,
i.content as content
from info i join user u on i.id = u.id
很显然,第二种连接查询的效率在觉得多数情况下要明显优于第一种子查询。
user表中的字段和索引比较多也不会明显的降低查询效率
[code="java"]
select
u.name as name,
u.nick_name as nick_name,
u.create_date as create_date,
i.title as title,
i.content as content
from info i,(select u1.name,u1.nick_name,u1.create_date from user u1 where u1.id = i.id) u
[/code]
这样貌似也可以吧,不敢保证