麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

多條件數據庫查詢的優化方法

2019-11-17 04:39:44
字體:
來源:轉載
供稿:網友
  在數據庫編程中,治理人員需要經常從數據庫中查詢數據。當查詢條件為確定時,我們可以明確用的SQL語句來實現,但是當查詢條件為多個條件的動態組合時,查詢語句會由于分支太多及IF語句的多重嵌套而變得相當復雜。在此,筆者提供了一種優化方法,運用本方法可以有效地減少查詢語句的分支和數量以及IF條件語句的嵌套層數,從而提高程序的運行效率。

  下面我們以一個簡單的例子來說明,假設有一個名為employee的表,現在我們要從其中查詢數據,條件有三個,由用戶動態選擇,如圖1所示:



  其中條件A、B、C之間是與的關系,A、B、C均為動態選擇,可以取其中的一個、兩個或三個,也可以一個都不選,當三個條件都不選擇時則認為是無條件查詢,按照通常的做法,判定方法如圖2所示:



  這樣,最終的結果有8個,即有8條查詢語句,分別是

  1.select * from employee;

  2.select * from employee where Age =C ;

  3.select * from employee where Sex=B;

  4.select * from employee where Sex=B and Age=C;

  5.select * from employee where Name=A;

  6.select * from employee where Name=A and Age=C;

  7.select * from employee where Name=A and Sex=B ;

  8.select * from employee where Name=A and Sex=B and Age=C;

  顯然這是比較煩瑣的,而且用到了多重嵌套IF語句,因而在條件增多時,其復雜程度將大大增加。我們對它進行優化,方法如下:

  首先定義一個字符串Str_Result用來存放組合條件的結果,開始時為空。

  用程序語言描述如下:

if A <> "" then
Str_Result="where Name =A"
end if
if B <> "" then
if Str_Result="" then
Str_Result="where Sex=B"
else
Str_Result=Str_Result+"and Sex = B"
end if
end if
if C <> "" then
if Str_Result="" then
Str_Result="where Age =C"
else
Str_Result=Str_Result+"and Age=C"
end if
end if
  最終的結果查詢語句為:select * from employee + Str_Result。

  顯然,這種方法減少了組合的分支和if語句的多重嵌套,從而提高了程序的效率。

  本方法的原理在于定義了一個單獨的字符串來表示組合的結果,當該字符串經過條件A后其值為A的條件,經過條件B后其值則為條件A與B 組合的結果,而當經過條件C后其值則變成條件A、B、C的組合,從而減少了組合判定的分支,對于更多條件的組合,其效能將更加明顯。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91午夜少妇三级全黄 | 91九色福利 | 久久羞羞视频 | 91av在线影院| h久久| 欧美精品成人一区二区三区四区 | 一级做a爱片性色毛片高清 日本一区二区在线看 | 色啪综合| 免费网址黄 | 国产在线欧美日韩 | 欧美日韩国产中文字幕 | 成人在线免费视频播放 | 一边吃奶一边插下面 | 草莓福利视频在线观看 | 国产一区二区三区手机在线 | 第四色成人网 | 国产男女爽爽爽爽爽免费视频 | 成人男女啪啪免费观看网站四虎 | 国产黄色录像片 | 国产精品视频yy9299一区 | 99精品视频久久精品视频 | 九九热精 | 成人福利在线免费观看 | 亚洲导航深夜福利涩涩屋 | 国产日韩在线视频 | 欧美国产一区二区三区 | 看黄在线观看 | 国产一级免费在线视频 | 高颜值美女啪啪 | 久久精品中文字幕一区 | 成年人国产视频 | 精品一区二区久久久久久按摩 | 国产一区二区免费 | 午夜激情视频网站 | 久久在线免费视频 | 精品亚洲va在线va天堂资源站 | 欧美成人激情在线 | 亚洲精中文字幕二区三区 | 久久精品视频1 | 国产中出在线观看 | 56av国产精品久久久久久久 |