Sql 你知道为什么这个查询会运行得这么慢吗?

Sql 你知道为什么这个查询会运行得这么慢吗?,sql,sql-server,database-administration,sqlperformance,Sql,Sql Server,Database Administration,Sqlperformance,查询一——索引查找 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' SELECT P.Da

查询一——索引查找

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'
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%'
  • 问题二

    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'
    
  • 查询三——索引查找

    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'
    
    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 server中的查询1和查询3速度很快,但查询2速度太慢,因此不会显示结果

    在另一台服务器中,它们都很快,我运行了
    sp\u updatestats
    ,但这并不更好


    如何解决此问题?

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


    数据库1..TABLE1上有哪些索引?错误的索引会减慢查询速度。当我禁用索引时,问题已得到解决。谢谢。我不使用此函数,但其他用户使用此函数,我是DBA,我必须控制SQL Server性能。好的,但请让这些用户知道如何避免where子句中的数据函数。。。。那会帮你的,太好了!那么你有想要的答案了?如果这是真的,那么请接受,看是的,我知道,但我的问题是通过禁用索引解决的,我同意你关于列的函数阻止使用索引,我告诉他们