日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何最有效地編寫SQL

解決數(shù)據(jù)庫級(SQL)工作上的問題,應該采用的是SET方法(整體的)而不是過程式的方法。下面來看看作者為什么這么說。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了元寶山免費建站歡迎大家使用!

編寫有效的SQL查詢是企業(yè)軟件世界中***的難題之一。

每個公司在數(shù)據(jù)庫開發(fā)項目中所面臨的最根本的問題,在于開發(fā)環(huán)境中實現(xiàn)的性能不能在生產(chǎn)環(huán)境中實現(xiàn)。一般來說,存在性能損失是因為生產(chǎn)環(huán)境中的數(shù)據(jù)量要大得多。

這些問題(運行緩慢的數(shù)據(jù)庫操作)可能有各種各樣的原因。本文將解釋如何在編寫查詢時進行思考,如何思考是最基本的問題,也是解決此類問題的起點。

觀察發(fā)現(xiàn)SQL開發(fā)人員常使用過程方法編寫查詢。事實上,這是很自然的,因為用程序方法解決問題是最方便的人類邏輯解決方案。另一個方面,幾乎所有的SQL開發(fā)人員都在同時編寫Java、c#或其他編程語言的代碼。Java、C#等可以用來訓練開發(fā)人員以一種程序化的方式來培養(yǎng)他們的思維方式,因為當使用這些語言開發(fā)應用程序時,會使用很多類似的東西,比如IF .. THEN .. ELSE,F(xiàn)OR .. LOOP,WHILE .. DO, CASE .. WHEN。當然,在這種情況下,當將業(yè)務規(guī)則應用到一組數(shù)據(jù)時,意味著每個記錄都是單獨處理的(逐行處理)。這個過程方法在Java、c#等語言中使用。雖然使用語言開發(fā)軟件是一種正確的方法,但在編寫數(shù)據(jù)庫級(SQL)的查詢時,卻不會產(chǎn)生同樣的效果。

下面用兩種不同的方法來解決同一個示例問題,并將結(jié)果進行比較。看看CUSTOMERS表中對應的每個客戶在SALES表中有多少條記錄。

過程式方法如下:

   

 

現(xiàn)在,采用基于SET的方法來編寫查詢。

  

 

可以看到在兩個查詢的consistent gets數(shù)量之間的差異(當檢查緩沖區(qū)緩存讀到的塊數(shù)據(jù)時)是巨大的。使用兩種不同方法編寫的查詢在運行時導致不同時間。這種差別可以用性能來解釋。

在另一個例子中,常見的習慣是在SQL語句中調(diào)用PL/SQL函數(shù)。作為過程式工作的例子,也是一種解決問題的方法。還有其他一些影響在SQL內(nèi)調(diào)用PL/SQL代碼性能的不利因素,但在本文中,不會提到性能問題。

下面編寫查找客戶表中每個客戶的購買金額的代碼。

過程方法:

在***步中,創(chuàng)建一個PL/SQL函數(shù)來計算每個客戶的總數(shù),然后在代碼和輸出中調(diào)用這個函數(shù)。

  

 

現(xiàn)在,采用基于SET的方法來編寫查詢。

   

 

在本例中,通過查看consistent GETS和遞歸調(diào)用輸出,我們可以看到相同的情況。

我們的查詢也是生成更高效的數(shù)據(jù)庫操作的***步,它考慮的是批處理,而不是逐行思考。在進行數(shù)據(jù)庫操作時,批處理的方法會讓你在一天結(jié)束時消耗更少的資源,從而提高工作效率。 


分享文章:如何最有效地編寫SQL
文章分享:http://m.5511xx.com/article/coocoie.html