zoukankan      html  css  js  c++  java
  • mssql 数据库“查询处理器用尽了内部资源,无法生成查询计划。”问题的处理

    在项目中动态拼接sql语句,使用union all连接结果集,每个查询语句都使用了in(几百个数值)。语句如:

    SELECT AA FROM T1 WHERE aa IN(1,2,3,4..............................)
    UNION ALL
    SELECT AA FROM T2 WHERE aa IN(1,2,3,4..............................)

    当in和union all 很多时执行就会发生异常
    ”查询处理器用尽了内部资源,无法生成查询计划。这种情况很少出现,只有在查询极其复杂或引用了大量表或分区时才会出现。请简化查询。如果您认为该消息的出现纯属错误,请与客户支持服务部门联系,了解详细信息。“

    解决方法:

    使用临时表把in语句改成EXISTS语句

    CREATE TABLE #temp(id nvarchar(50))
    INSERT INTO #temp(id) select 1  union select 2 union select 3 union select 4union select 5
    
    SELECT AA FROM T1 WHERE EXISTS (SELECT 0 FROM #temp WHERE id=T1.aa)
    UNION ALL
    SELECT AA FROM T2 WHERE EXISTS (SELECT 0 FROM #temp WHERE id=T1.aa)
    
    DROP TABLE #temp;

    性能改善:

    修改前执行57秒报错,修改后14秒出结果,效果还是很明显的.

  • 相关阅读:
    jenkins+pytest+ allure运行多个py文件测试用例
    jenkins发送测试报告邮件
    appium+python 存在多个类时,不用每次都初始化解决办法
    allure报告定制(pytest+jenkins)
    UVa202
    UVa1588
    UVa1587
    OpenJ_Bailian3377
    OpenJ_Bailian 1852
    UVa227
  • 原文地址:https://www.cnblogs.com/zhaobl/p/3091142.html
Copyright © 2011-2022 走看看