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

有时候,咱们须要作多条件查询,多个条件为“或”的关系,分类查询等,通常会用到多段select语句,而后用union或者union all进行链接,进而查出须要的结果。sql

例如,数据库

select 框架

a.id as id,ide

a.name as name,函数

a.age as age性能

from scama.table_name2 a字符串

where 1=1it


union allio


select table

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后传递给数据库执行带来的性能问题等等。

那么如何进行更好的改进实现呢?

方式有不少,博主根据本身的经验提供以下两种方案可供参考。

一、将各段查询语句,分开调用

将每段select单独写方法调用,最后再将每一个调用的结果汇总为结果。

例如,

datatable dt1= 调用第一段的sql的结果;

datatable dt2= 调用第二段的sql的结果;

...

依次查询完成,最后合并dt1,dt2....

这种方案针对前台程序将sql拼接为字符串,经过程序自己框架内实现的与数据库的链接方式,执行sql语句。


二、后台完成,将查询的结果写入临时表或者中间表,直接查询该表的结果

即,使用存储过程或者函数,将须要查询的多条sql语句插入至一张临时表(物理表也可),而后返回结果。

这种方式,由于是在数据库中完成,那么有些须要查询的字段,就能够单独写语句查询出来再赋值给当前结果。

相关文章
相关标签/搜索