今天发现自己之前写的一些SQL查询在执行效率方面非常不理想,于是尝试做了些改进。

需求为查询国地税表和税源表中,国税有而税源没有的条目数,之前的查询如下:

 SELECT COUNT(NAME)
FROM(SELECT TAX_INFO_GD.NAME,
TAX_INFO.NSR,
TAX_INFO_GD.SH_ID,
TAX_INFO.SHXYDM,
TAX_INFO_GD.SYLX,
TAX_INFO_GD.JDXZ,
TAX_INFO_GD.STATE GDSTATE
FROM TAX_INFO_GD
LEFT JOIN TAX_INFO
ON TAX_INFO_GD.NAME = TAX_INFO.NSR
OR TAX_INFO_GD.SH_ID = TAX_INFO.SHXYDM)
WHERE NSR is null
and SHXYDM is null
and (SYLX = OR SYLX = )
and GDSTATE='正常';

改进过后的代码:

     SELECT COUNT(*)
FROM TAX_INFO_GD B
WHERE (SELECT COUNT() ASnum
FROM TAX_INFO A
WHERE A.NSR = B.NAME
AND A.SHXYDM = B.SH_ID) =
AND B.STATE = '正常'
AND (B.SYLX = '' OR B.SYLX = '');

两段查询语句查询出的结果是一样的,

第一种查询思路是先将国地税表和税源表做左链接,这也就意味着形成的临时表是以国地税表为主体,将税源表所有字段横向追加到国地税表中的一张大表,比国地税表的字段数量更多。在形成这张临时表之后再做一次符合条件的查询。

而第二种查询方式的主体思路是先在一张表中筛选,筛选出的数据就是另外一张表的查询条件。

这里只有结果,不做结论,因为orcale内部是何种数据结构如何运行我们不得而知,贸然的主观猜测可能会误人子弟。

最新文章

  1. 配置FastReport,FastReport报表加载不出来
  2. MonoDevelop几个常用的快捷键
  3. css样式设计
  4. asp.net 微信企业号办公系统-流程设计--流转条件设置(路由)
  5. 使用android.support.design.widget.TabLayout出现java.lang.reflect.InvocationTargetException
  6. python与编码
  7. 【HDOJ】1230 火星A+B
  8. iOS高级工程师面试
  9. mount命令汇总(转载)
  10. 让Delphi XE2程序支持UAC
  11. Scala的类层级讲解
  12. linux安装windows启动盘
  13. 基于Matlab实现多次最佳一致的函数逼近(类似求渐进函数)
  14. js-XMLHttpRequest 2级
  15. LabVIEW---vi图标和符号的制作
  16. JAVA自学笔记14
  17. Redis应用场景说明与部署
  18. elasticsearch 测试
  19. python 计时程序运行时间
  20. [Model] LeNet-5 by Keras

热门文章

  1. [django]用日期来查询datetime类型字段
  2. SSH深度历险(二) Jboss+EJB的第一个实例
  3. javascript之cookie对象
  4. JDBC编程学习笔记之数据库连接池的实现
  5. Cytoscape源码下载地址和编译办法
  6. SDL2源代码分析5:更新纹理(SDL_UpdateTexture())
  7. ubuntu权限管理常用命令
  8. iOS中 Animation 动画大全 韩俊强的博客
  9. 【Unity Shaders】Reflecting Your World —— Unity3D中简单的Cubemap反射
  10. Redis简介 Linux安装Redis Redis使用