首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql 多表查询 执行顺序有关问题

2012-02-10 
sql 多表查询 执行顺序问题语句如下:selectcfyysljcb.yyjl,cfyysljcb.CFID,.....cfb.YSBH,cfb.YY_ID,cfb.B

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

热点排行