先在table A执行筛选,然后在连接。把连接操作放在最后。
优化的一般准则为:
1、选择运算应尽可能先做
2、在执行连接前对关系适当的预处理
3、把投影运算和选择运算同时进行
4、把投影同其前或其后的双目运算结合起来
5、把某些选择同在他前面要执行的笛卡尔积结合起来成为一个连接运算
6、找出公共子代表式

解决方案 »

  1.   

    select A.Userno,A.UserName,B.EndDate 
      from      
      (select UserNo,UserName from TalbeA where tableA.Kind="K") as  A, 
      TableB B 
    where  A.UserNO=B.UserNO 
                                
      

  2.   

    你的写法非常标准, 约束条件已经很完整了. 如果你的后台数据库是ORACLE的话, 数据库会自动根据优化原则来处理. 事实上两种写法在ORACLE中执行路径是完全一样的:select A.Userno,A.UserName,B.EndDate 
      from TableA A, TableB B 
     where A.UserNO=B.UserNO 
       and A.Kind="K";select A.Userno,A.UserName,B.EndDate 
      from      
      (select UserNo,UserName from TalbeA where tableA.Kind="K") as  A, 
      TableB B 
    where  A.UserNO=B.UserNO 相信大部分的数据库都是一样的处理. 我不清楚你的错误信息是什么, 能贴出来看看吗?