SELECT msg_id,message from msg where state='sd' and msg_id in
(select msg_id from ct where type='10' and msg_id=msg.msg_id);我想问select msg_id from ct where type='10' and msg_id=msg.msg_id这一句的
msg_id=msg.msg_id这个条件是两个表的整个数据都比较还是只限定在msg.state='sd' 这些数据的比较?
(select msg_id from ct where type='10' and msg_id=msg.msg_id);我想问select msg_id from ct where type='10' and msg_id=msg.msg_id这一句的
msg_id=msg.msg_id这个条件是两个表的整个数据都比较还是只限定在msg.state='sd' 这些数据的比较?
所以 msg_id=msg.msg_id这个条件应该是两个表的整个数据都比较的
SELECT msg_id,message from msg where msg_id in
(select msg_id from ct where type='10' and msg_id=msg.msg_id)
and state='sd'
SELECT msg_id,message from msg where msg_id in
(select msg_id from ct where type='10' and msg_id=msg.msg_id)
and state='sd' 这位老兄这个是个很好的优化方法.
的确是限定在msg.state='sd'中,由于先执行限定在msg.state='sd'将大大提高SQL的查询速度.
我还是比较同意vokeyliu的做法.
如果是基于规则的,2种应该是有差异的。我觉得。
SELECT msg_id,message from msg where state='sd' and msg_id in
(select msg_id from ct where type='10' and msg_id=msg.msg_id);
改成
SELECT msg_id,message from msg where msg_id in
(select msg_id from ct where type='10' and msg_id=msg.msg_id) and state='sd' ;
就可以了吧