gpt4 book ai didi

sql - 使用动态 WHERE 子句的慢查询

转载 作者:行者123 更新时间:2023-12-02 07:36:26 24 4
gpt4 key购买 nike

我知道下面的查询不是最好的,但现在它必须完成工作:

FROM dbo.CE_Summons_ext0 s with (nolock)
INNER JOIN dbo.CE_Fines_ext0 f with (nolock)
ON (f.ref_no = s.ref_no AND f.doc_type = s.doc_type)
INNER JOIN dbo.CE_charge_status c with (nolock)
ON f.status = c.status_no
INNER JOIN dbo.CE_COURT_DESC crt_desc with (nolock)
ON crt_desc.COURT = s.COURT
INNER JOIN dbo.CE_CntParms_ext0 param with (nolock)
ON param.REF_NO = s.ref_no
INNER JOIN dbo.CE_Court_result crt_result with (nolock)
ON crt_result.COURT_RESULT = param.COURT_RESULT
WHERE s.SUMMONS_NO = isnull(nullif(@sms_summons_no, ''), s.SUMMONS_NO)
AND s.ref_no = isnull(nullif(@scp_ref_no,''), s.ref_no)
AND s.COURT = isnull(nullif(@sms_court,'') , s.COURT)
-- AND f.STREET1 = isnull(nullif(@street1,''), f.STREET1)
-- AND f.acc_name = isnull(nullif(@offender_name,''), f.acc_name)
-- AND f.id_no = isnull(nullif(@offender_id,''), f.id_no)
-- AND f.acc_name = isnull(nullif(@owner_name,''), f.acc_name)
-- AND f.id_no = isnull(nullif(@owner_id,''), f.id_no)
END

WHERE 子句上,如果我取消注释最后的条件,它运行得非常慢。我做错了什么?

最佳答案

这看起来好像您是根据参数值来确定 where 子句。就性能而言,执行此操作的最有效方法通常是使用动态 SQL 动态构建查询,这样您就不必在 where 子句中使用函数。

关于sql - 使用动态 WHERE 子句的慢查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15951604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com