日期:2014-05-18  浏览次数:20513 次

这个SQL能运行,但能优化下吗?
SELECT u.email FROM members u WHERE u.username=(select w.username f
rom tableb w where w.tid='1');


我想根据在tableb表中tid=1的username 从member表中选出email.

------解决方案--------------------
不能了。
如果实在想优化,可以考虑修改Index等。
------解决方案--------------------
SELECT u.email FROM members u WHERE exists (select w.username f
rom tableb w where w.tid='1'and w.username=u.username);


------解决方案--------------------
如果子查询是返回单个的值,这个语句好像没什么可优化的,
你可以考虑在两个表的连接字段 username 建索引
------解决方案--------------------
SQL code

SELECT u.email FROM members u WHERE exists (select 1 from tableb w where u,username
=w.username and w.tid='1')

没经验,不晓得这么写会不会快一点点,楼主试一下。
另外给where后面 出现的字段加上索引