程序架构探讨—001 查询语句中多段select语句的方案

原创 2015年11月18日 11:48:07

有时候,我们需要做多条件查询,多个条件为“或”的关系,分类查询等,一般会用到多段select语句,然后用union或者union all进行连接,进而查出需要的结果。
例如,
select
a.id as id,
a.name as name,
a.age as age
from scama.table_name2 a
where 1=1

union all

select
b.sn as id,
b.name as name,
b.age as age
from scama.table_name2 b
where 1=2

union all

select
c.serial_id as id,
c.name as name,
c.age as age
from scama.table_name3 c
where 1=3
;
此时程序实现时,存在不少的麻烦。例如,大段的相似的sql容易出错,后续的维护的不方便,以及如果程序拼接了sql后传递给数据库执行带来的性能问题等等。
那么如何进行更好的改进实现呢?
方式有很多,博主根据自己的经验提供如下两种方案可供参考。
1、将各段查询语句,分开调用
将每段select单独写方法调用,最后再将每个调用的结果汇总为结果。
例如,
datatable dt1= 调用第一段的sql的结果;
datatable dt2= 调用第二段的sql的结果;
...
依次查询完成,最后合并dt1,dt2....
这种方案针对前台程序将sql拼接为字符串,通过程序本身框架内实现的与数据库的连接方式,执行sql语句。

2、后台完成,将查询的结果写入临时表或者中间表,直接查询该表的结果
即,使用存储过程或者函数,将需要查询的多条sql语句插入至一张临时表(物理表也可),然后返回结果。
这种方式,因为是在数据库中完成,那么有些需要查询的字段,就可以单独写语句查询出来再赋值给当前结果。


 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

ABAP程序的数据查询语句SELECT.doc

  • 2010年03月17日 17:14
  • 34KB
  • 下载

mysql select查询语句优化方案

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。  2.应尽量避免在 where 子句中使用!=或 3.应尽量避免在 where 子...

select 查询语句练习

  • 2011年03月23日 17:55
  • 16KB
  • 下载

Oracle之select查询语句

一、子查询 一个查询的条件包含另一个查询的结果 子查询一般出现在SELECT语句的WHERE子句中,Oracle也支持在FROM或HAVING子句中出现子查询。子查询比主查询先执行,结果作为主查询的条...

管家婆ERP V3Ⅱ采购入库单生成金蝶财务软件K3 V10.3标准凭证引入的SQL select 查询语句

说明:双&括起来的是变量,执行查询前须换为常量,如: &上日& SELECT a.BillDate AS FDate, MAX(YEAR(a.BillDate)) AS FYear,      ...

MYSQL——DQL : 数据查询语句(select)

1SELECT 查询语句和条件语句 select过滤去重 select list其中可以包含一项或多项下列内容 表名 数据库表名表名 AS 表别名 常用条件 2排序分组指针查询计算 聚合合计函数计...
  • kwinH
  • kwinH
  • 2016年11月25日 14:00
  • 220

查询语句中select from where group by having order by的执行顺序

1.查询中用到的关键词主要包含六个,并且他们的顺序依次为  select--from--where--group by--having--order by    其中select和f...
  • fngy123
  • fngy123
  • 2014年11月06日 10:31
  • 1228

查询语句(SELECT)的优化建议

从大多数数据库应用系统的实例来看,查询*作在各种数据库*作中所占据的比重最大,而查询*作所基于的SELECT语句在SQL语句中又是代价最大的语句。 [size=large][color=red]查询...

如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?(

如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?(2006-12-14 09:25:36) 与这个问题具有相同性质的其他描述还...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:程序架构探讨—001 查询语句中多段select语句的方案
举报原因:
原因补充:

(最多只允许输入30个字)