SQL查询和优化(十四)——用分析函数优化标量子查询
2017-08-16 22:09
281 查看
当标量子查询中的表与主查询中的表一样,也就是自关联的时候,常常可以改为分析函数 SELECT a.*, CASE WHEN(SELECT COUNT(1) FROM ii b WHERE b.id > 0 AND b.flag = 2 AND b.i_code = a.i_code AND b.c_id NOT IN (SELECT c_id FROM c WHERE ig_name LIKE '%停用%')) > 1 THEN 2 ELSE 1 END AS mulinv FROM ii a WHERE (a.id > 0 AND itemdesc LIKE : 1 AND a.isphantom <> : 2) AND a.c_id = :3 ORDER BY a.i_code, a.i_name,a.d_id 主查询的过滤条件比标量多,所以要嵌套一次,再应用主查询中多出来的过滤条件 SELECT * FROM(SELECT ii.*, CASE /*用分析函数代替标量自连接*/ WHEN(SUM(CASE WHEN flag = 2 AND c.cid IS NULL THEN 1 END)over(PARTITION BY ii.i_code)) > 1 THEN 2 ELSE 1 END AS mulinv FROM ii LEFT JOIN c ON(c.c_id = ii.c_id AND ig_name LIKE '%停用%') WHERE ii.id > 0) WHERE itemdesc LIKE : 1 AND ii.isphantom <>:2 AND ii.c_id = :3 ORDER BY a.i_code, a.i_name,a.d_id
相关文章推荐
- 用分析函数优化标量子查询
- sql语句的优化分析之一查询语句中左连接和函数效率分析比较
- 一个用户SQL慢查询分析,原因及优化
- [转]一个用户SQL慢查询分析,原因及优化
- 改写优化SQL(3):聚合标量子查询改为left join
- SQL优化-标量子查询的改写
- 改写优化SQL(4):行转列标量子查询改为left join
- oracle数据库执行计划统计分析,优化表数据字典,提高sql查询效率
- MySQL索引优化分析,SQL优化,慢查询分析
- 改写优化SQL(5):带top的标量子查询改写
- SQL优化经典----利用分析函数优化自连接
- 自己实现一个SQL解析引擎 功能:将用户输入的SQL语句序列转换为一个可执行的操作序列,并返回查询的结果集。 SQL的解析引擎包括查询编译与查询优化和查询的运行,主要包括3个步骤: 查询分析
- sql server08 查询优化系列 3-1 sql 查询性能分析 sql profiler
- 看懂SqlServer查询计划 SQL语句优化分析
- 优化案例1---用分析函数优化优化执行计划中的FILTER以及标量子查询
- mysql一个用户SQL慢查询分析,原因及优化
- SQL优化--使用分析函数
- 优化有标量子查询的SQL
- 笔记:Oracle SQL 高级查询简介 (2) 分析函数
- SQL慢查询分析,原因及优化