程序架構探討—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語句插入至一張臨時表(物理表也可),而後返回結果。

這種方式,由於是在數據庫中完成,那麼有些須要查詢的字段,就能夠單獨寫語句查詢出來再賦值給當前結果。

相關文章
相關標籤/搜索