mssql 数据库“查询处理器用尽了内部资源,无法生成查询计划。”问题的处理
2013-05-21 17:30
489 查看
在项目中动态拼接sql语句,使用union all连接结果集,每个查询语句都使用了in(几百个数值)。语句如:
当in和union all 很多时执行就会发生异常
”查询处理器用尽了内部资源,无法生成查询计划。这种情况很少出现,只有在查询极其复杂或引用了大量表或分区时才会出现。请简化查询。如果您认为该消息的出现纯属错误,请与客户支持服务部门联系,了解详细信息。“
解决方法:
使用临时表把in语句改成EXISTS语句
性能改善:
修改前执行57秒报错,修改后14秒出结果,效果还是很明显的.
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秒出结果,效果还是很明显的.
相关文章推荐
- java.sql.SQLException: 查询处理器用尽了内部资源,无法生成查询计划 错误分析解决
- sql server2008 批量删除发生:查询处理器用尽了内部资源,无法生成查询计划。这种情况很少出现,只有在查询极其复杂或引用了大量表或分区时才会出现。请简化查询
- 内部查询处理器错误: 查询处理器无法生成查询计划。有关详细信息,请与客户支持服务部门联系。
- 内部查询处理器错误:查询处理器无法生成查询计划
- FIX: 错误消息当您使用服务器端游标来运行 SQL Server 2005 中大型复杂查询: " " 错误 8623, 严重性 16, 状态 1: 查询处理器用尽了超出内部资源:::
- 关于exchange数据库无法装载问题分析处理
- MSSQL - SqlServer:此数据库处于单用户模式,导致数据库无法删除的处理
- 500 – 内部服务器错误。 您查找的资源存在问题,因而无法显示。
- VS2015生成程序在别人电脑无法运行 msvcp140.dll 0x000007b 问题处理方法
- 500 – 内部服务器错误。 您查找的资源存在问题,因而无法显示。
- 查询数据库,处理NULL值问题
- hibernate注解无法在数据库自动生成表的部分可能问题
- Android中的xml或者drawable下面的资源无法在R.java中生成id的问题--2014年12月3日
- MSsql数据库修改数据类型Float到decimal的问题处理
- 计划不详细,出现问题,QA无法跟踪和确认,如何处理?
- 网站无法连接sql sever数据库的一些问题处理,解决自己定义的数据库用户名,无法关联数据库和无法登陆数据库
- mssql数据库使用web程序无法连接的问题
- 转载--SQL还原数据库后孤立用户问题处理(SQL 数据库 拥有对象 无法删除)
- java生成Zip文件,无法删除,资源被占用问题
- 与personal database不同SDE连接数据库发布的资源,在进行查询时出现问题(arcgis server 9.2)。