关于为什么这个查询会 运行 这么慢的任何想法?

Any ideas on why this query would run so slow?

  1. 查询一--索引查找

    SELECT P.Date_Send_Ins,C.* 
    FROM DATABASE1..TABLE1 P  WITH (FORCESEEK) JOIN DATABASE2..TABLE2 C   ON P.COLUMN1  = C.COLUMN1  AND P.COLUMN2 =    C.COLUMN2 
    WHERE    LEFT(C.COLUMN3 ,7) LIKE 'YYYY/MM' and LEFT(P.COLUMN3 ,2) = 'YS'
    
  2. 查询二

    SELECT P.Date_Send_Ins,C.*
    FROM DATABASE1..TABLE1 P   JOIN DATABASE2..TABLE2 C   ON P.COLUMN1  = C.COLUMN1  AND P.COLUMN2 = C.COLUMN2 
    WHERE    LEFT(C.COLUMN3 ,7) LIKE 'YYYY/MM' and LEFT(P.COLUMN3 ,2) = 'YS'
    
  3. 查询三--索引查找

    SELECT P.Date_Send_Ins,C.* 
    FROM DATABASE1..TABLE1 P   JOIN DATABASE2..TABLE2 C   ON P.COLUMN1  = C.COLUMN1  AND P.COLUMN2 = C.COLUMN2 
    WHERE    LEFT(C.COLUMN3 ,7) LIKE 'YYYY/MM' and  P.Date_Send_Ins LIKE 'YS%'
    

查询一和查询三在 sql 服务器中速度很快,但查询二太慢,结果没有出现。

在另一台服务器上,它们都很快,我运行 sp_updatestats,但并没有更好。

如何解决这个问题?

避免在 where 子句中的任何 table 列上使用函数。几乎总是性能问题。例如不要使用 LEFT()

SELECT P.Date_Send_Ins,C.* 
FROM DATABASE1..TABLE1 P  
JOIN DATABASE2..TABLE2 C   ON P.COLUMN1  = C.COLUMN1  AND P.COLUMN2 = C.COLUMN2 
WHERE  C.COLUMN3 LIKE 'YYYY/MM%' 
and P.COLUMN3 = 'YS%'