在我的数据库中执行 
SELECT 1 FROM TABLE1 A 
                    JOIN TABLE2 B ON A.ID=B.ID
                    JOIN TABLE3 C ON A.ID=C.ID
             WHERE A.SL<>B.SL OR B.SL<>C.SL
这段语句速度很快 1秒就有结果 
可是我这样写IF EXISTS (SELECT 1 FROM TABLE1 A 
                    JOIN TABLE2 B ON A.ID=B.ID
                    JOIN TABLE3 C ON A.ID=C.ID
             WHERE A.SL<>B.SL OR A.SL<>C.SL)
SELECT 1
ELSE
SELECT 2
 这段语句时 需要30秒的时间  这是 为什么啊? 我该怎样修改TABLE1 TABLE2 TABLE3 这三个表结构一样 都只有 ID,SL 两个字段

解决方案 »

  1.   

    WHERE A.SL<>B.SL OR B.SL<>C.SL
    WHERE A.SL<>B.SL OR A.SL<>C.SL)

    这两个条件也不一样
      

  2.   

    IF EXISTS (SELECT TOP 1 A.ID FROM TABLE1 A 
    JOIN TABLE2 B ON A.ID=B.ID
    JOIN TABLE3 C ON A.ID=C.ID
    WHERE A.SL<>B.SL OR A.SL<>C.SL)
    SELECT 1
    ELSE
    SELECT 2
      

  3.   

    在我的数据库中执行 
    SELECT 1 FROM TABLE1 A 
    JOIN TABLE2 B ON A.BH=B.BH
    JOIN TABLE3 C ON A.BH=C.BH
    WHERE A.SL<>B.SL OR A.SL<>C.SL
    这段语句速度很快 1秒就有结果 
    可是我这样写IF EXISTS (SELECT 1 FROM TABLE1 A 
    JOIN TABLE2 B ON A.BH=B.BH
    JOIN TABLE3 C ON A.BH=C.BH
    WHERE A.SL<>B.SL OR A.SL<>C.SL)
    SELECT 1
    ELSE
    SELECT 2
    这段语句时 需要30秒的时间 这是 为什么啊? 我该怎样修改TABLE1 TABLE2 TABLE3 这三个表结构一样 都只有 BH,SL 两个字段
      

  4.   


    使用你的这种方法 光执行 
    SELECT TOP 1 A.ID FROM TABLE1 A 
    JOIN TABLE2 B ON A.ID=B.ID
    JOIN TABLE3 C ON A.ID=C.ID
    WHERE A.SL<>B.SL OR A.SL<>C.SL
    这段 时间就特别长  如果将TOP 1 A.ID 换成 * 或者 1 速度就很快
      

  5.   

    以上人回答的就不对。
    你将语句改成
    SELECT 1 AS HH INTO #TMP_TABLE FROM TABLE1 A 
    JOIN TABLE2 B ON A.BH=B.BH
    JOIN TABLE3 C ON A.BH=C.BH
    WHERE A.SL<>B.SL OR A.SL<>C.SL
    IF EXISTS (SELECT HH FROM #TMP_TABLE )
    SELECT 1
    ELSE
    SELECT 2
    这样试试