上面的语句不超时才怪呢?你连接关系是 c.c_job <> cu.c_job ,这个连接产生的结果集是非常庞大的;
另外你的where字句中使用了 or ,也无法使用到索引;不如你把需求说出来,看有没有其他方法解决

解决方案 »

  1.   

    可以先申明一个临时表或者表变量@tmpTbl,然后按照每个类别分开查询,把查询结果插入@tmpTbl, 这样都可以不作连接运算
      

  2.   

    举一些数据看看,我不懂c.c_job <> cu.c_job这些字段的具体含义和定义,
      

  3.   

    错了,错了,我想错了
    不好意思~~~
    本来那个MAX函数就有防止重复的功能
    我却又加了一个c.c_job <> cu.c_job来防止重复~~`
    造成了数据的重复过滤才会这样的慢啊
    不过我真想知道那个申明临时表的做法应该是怎么样的呢????
      

  4.   

    这是 SQL 帮助,有关于临时表的知识,它的创建跟基本表一样:临时表
    也可以创建临时表。临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。有本地和全局两种类型的临时表,二者在名称、可见性和可用性上均不相同。本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 Microsoft&reg; SQL Server&#8482; 2000 实例断开连接时被删除。全局临时表的名称以数学符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。例如,如果创建名为 employees 的表,则任何人只要在数据库中有使用该表的安全权限就可以使用该表,除非它已删除。如果创建名为 #employees 的本地临时表,只有您能对该表执行操作且在断开连接时该表删除。如果创建名为 ##employees 的全局临时表,数据表中的任何用户均可对该表执行操作。如果该表在您创建后没有其他用户使用,则当您断开连接时该表删除。如果该表在您创建后有其他用户使用,则 SQL Server在所有用户断开连接后删除该表。下班了,要走人了,88