sql 多表查询 执行顺序问题
语句如下:
select cfyysljcb.yyjl,
cfyysljcb.CFID,
.....
cfb.YSBH,
cfb.YY_ID,
cfb.BRNR,
cfb.JBLX,
yyb.ypname
from T_JC_YYJC_CFYYSLJC cfyysljcb, T_JC_CF cfb, T_JC_XS yyb
where cfyysljcb.cfid = cfb.cf_id
and cfyysljcb.cfyyid = yyb.id
and cfyysljcb.id = ''
and cfb.cf_id = ''
and cfb.yy_id = '';
这样的查询 如果不加后面三个条件,数据记录数就是三个表记录数相乘的结果,
问题: 上面的语句 是将三个表的结果全部查出来后根据条件过滤,还是先根据条件过滤然后得到结果的???
[解决办法]
这个问题比较复杂,最近好象讨论优化的贴子很多。
下面两个贴子是MySQL中的,不过各数据库基本类似。具体你需要参考一下SQL Anywhere 的文档中的介绍了。
(一般主要考虑索引,如果你的三个表都没有相关索引,则会先做 后面三个条件,然后再进行笛卡尔积)
http://topic.csdn.net/u/20090526/17/639d78ec-e299-40d0-9c8e-8d5b21229405.html
http://topic.csdn.net/u/20090520/16/a96a2e90-a935-4460-837e-e52b4557c519.html
[解决办法]
根据SQL执行顺序,应该是FROM,再WHERE