偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何最有效地編寫SQL

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

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

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

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

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

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

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

過程式方法如下:

   

 

現在,采用基于SET的方法來編寫查詢。

  

 

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

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

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

過程方法:

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

  

 

現在,采用基于SET的方法來編寫查詢。

   

 

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

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

責任編輯:龐桂玉 來源: CSDN大數據
相關推薦

2012-09-28 15:06:43

2012-08-30 14:43:19

IBMdw

2020-07-30 11:41:52

IT團隊遠程工作CIO

2025-08-06 07:37:22

2017-07-07 08:46:51

災難恢復架構

2011-11-02 09:54:37

測試

2013-06-04 10:35:55

虛擬化IT系統(tǒng)

2022-09-27 15:51:51

機器翻譯AI

2021-12-12 21:36:04

Java開發(fā)代碼

2009-10-13 15:38:04

CMDB

2019-05-09 14:32:13

IT中斷災難恢復攻擊

2019-02-28 07:34:56

欺騙勒索軟件攻擊

2018-11-26 07:23:08

數據數據分析

2024-03-05 13:47:24

云計算容器服務

2023-12-06 13:49:00

低代碼開發(fā)

2017-04-28 09:04:32

移動應用開發(fā)反饋

2009-09-11 10:34:53

CCIE知識點CCIE

2012-02-08 16:45:20

ibmdw

2021-01-22 15:39:51

區(qū)塊鏈比特幣貨幣

2022-06-22 10:07:07

JavaScript枚舉
點贊
收藏

51CTO技術棧公眾號