自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

DB2數(shù)據(jù)庫SQL編碼優(yōu)化與性能描述

數(shù)據(jù)庫
以下的文章主要描述的是DB2數(shù)據(jù)庫SQL編碼優(yōu)化基礎(chǔ)以及對(duì)最大限度地利用DB2 SQL編碼以獲得最佳性能的實(shí)際操作步驟的介紹。

此文章主要講述的是最大限度地利用DB2 SQL編碼以獲得最佳性能的實(shí)際操作步驟,在實(shí)際操作中當(dāng)要保證用 IBM DB2® Universal Database™(DB2 UDB)與 Borland® 工具(如 Delphi™、C++Builder™ 或 Kylix™)構(gòu)建的企業(yè)應(yīng)用程序擁有最優(yōu)性能時(shí)。

程序員可以利用 DB2 優(yōu)化器的能力來處理即使是“難以處理的”SQL 語句并給出有效的存取路徑。盡管如此,拙劣編碼的 SQL 和應(yīng)用程序代碼仍可能給您帶來性能問題,通過學(xué)習(xí)幾條基本準(zhǔn)則可以輕易地避免這些問題。‘

我將向您演示 DB2 優(yōu)化器的工作方式,并提供編寫能發(fā)揮優(yōu)化器最大效率的 SQL 的準(zhǔn)則。但即使擁有了 DB2 的優(yōu)化能力,編寫有效的 SQL 語句仍可能是一件復(fù)雜的事情。如果程序員和開發(fā)人員還不熟悉關(guān)DB2數(shù)據(jù)庫環(huán)境,這件事就尤其顯得棘手。因此,在我們深入研究編碼 SQL 以獲得最佳性能的細(xì)節(jié)之前,先花一些時(shí)間來回顧 SQL 基礎(chǔ)知識(shí)。

 

基礎(chǔ)知識(shí)

由于 SQL 與過程化語言不同,它提供了更高的抽象級(jí)別,因此它可以讓程序員把精力集中到他們需要 什么樣的數(shù)據(jù),而不是 如何檢索數(shù)據(jù)。您不必使用嵌入式數(shù)據(jù)導(dǎo)航指令來編碼 SQL。DB2 會(huì)分析 SQL,并“在幕后”制定數(shù)據(jù)導(dǎo)航指令。這些數(shù)據(jù)導(dǎo)航指令叫作 存取路徑。

讓 DBMS 確定到數(shù)據(jù)的最優(yōu)存取路徑解除了程序員肩上沉重的負(fù)擔(dān)。此外,DB2數(shù)據(jù)庫可以更好地理解它存儲(chǔ)的數(shù)據(jù)的狀態(tài),從而可以生成到數(shù)據(jù)的更有效和動(dòng)態(tài)的存取路徑。其結(jié)果就是適當(dāng)使用的 SQL 可以用于更快的應(yīng)用程序開發(fā)。

另一個(gè) SQL 特性是它不僅僅是一種查詢語言。您還可以使用它來定義數(shù)據(jù)結(jié)構(gòu);控制對(duì)數(shù)據(jù)的訪問;以及插入、修改和刪除數(shù)據(jù)的發(fā)生。通過提供一種公共語言,SQL 簡化了 DBA、系統(tǒng)程序員、應(yīng)用程序員、系統(tǒng)分析員和最終用戶之間的通信。當(dāng)項(xiàng)目的所有參與者都使用同一種語言時(shí),他們之間所建立起來的協(xié)作就可以減少整體系統(tǒng)開發(fā)時(shí)間。

歷史證明,保證 SQL 成功的最重要的一個(gè)特性就是它使用類似英語的語法輕松地檢索數(shù)據(jù)的能力。理解這種語言比理解數(shù)據(jù)頁面的結(jié)構(gòu)和程序源代碼要容易得多:

 

  1. SELECT LASTNAME  
  2. FROM EMP  
  3. WHERE EMPNO = '000010';  

 

想想看:當(dāng)訪問文件中的數(shù)據(jù)時(shí),程序員必須編碼指令來打開文件、開始一個(gè)循環(huán)、讀取記錄、檢查 EMPNO 字段是否等于適當(dāng)?shù)闹?、檢查文件結(jié)尾、回到循環(huán)的開頭等。

SQL 本來就是非常靈活的。它使用自由格式的結(jié)構(gòu),該結(jié)構(gòu)可以讓用戶開發(fā) SQL 語句來適合他們的需要。DBMS 在執(zhí)行之前會(huì)分析每個(gè) SQL 請(qǐng)求,以檢查語法是否正確和優(yōu)化該請(qǐng)求。SQL 語句不需要從任何給定的列中開始,您可以將它們串在一行中,或者把它們拆成幾行。例如,以下這條單行的 SQL 語句與我前面使用的三行示例等價(jià):

 

  1. SELECT LASTNAME FROM EMP WHERE EMPNO = '000010'

SQL 的另一個(gè)靈活特性是您可以用許多形式不同但功能等價(jià)的方法來制定一個(gè)請(qǐng)求。例如:SQL 可以連接表或嵌套查詢。您始終可以將嵌套查詢轉(zhuǎn)換成等價(jià)的連接。您可以在大量的函數(shù)和謂詞中看到這一靈活性的其它示例。具有等價(jià)功能的特性的示例包括:

 

  1. BETWEEN vs <= / >=  

IN vs 一系列和 OR 配合的謂詞

 

INNER JOIN vs FROM 子句中串在一起并用逗號(hào)分隔的表

 

OUTER JOIN vs 帶有 UNION 的簡單 SELECT 和相關(guān)的子查詢

 

CASE 表達(dá)式 vs 復(fù)雜的 UNION ALL 語句

 

SQL 展示的這一靈活性并不總是稱心的,因?yàn)樾问讲煌δ艿葍r(jià)的 SQL 公式可以提供非常不同的性能。我將在本文的以后部分討論該靈活性所造成的結(jié)果,并提供開發(fā)有效的 SQL 的準(zhǔn)則。

 

如我所說的,SQL 指定了要檢索或操作什么數(shù)據(jù),但沒有指定DB2數(shù)據(jù)庫如何完成這些任務(wù)。這就使 SQL 本身變得很簡單。如果您能夠記得關(guān)系數(shù)據(jù)庫的一次處理一個(gè)集合(set-at-a-time)的特點(diǎn),您就開始掌握 SQL 的本質(zhì)和性質(zhì)了。一條 SQL 語句可以作用于多行。作用于一組數(shù)據(jù)而不需要建立如何檢索和操作數(shù)據(jù)的能力將 SQL 定義成非過程化語言

因?yàn)?SQL 是一種非過程化語言,所以一條語句可以代替一系列過程。同樣,由于 SQL 使用集合級(jí)別的處理以及 DB2 優(yōu)化查詢來確定數(shù)據(jù)導(dǎo)航邏輯,所以這是可能的。有時(shí),如果不使用 SQL 語句,一條或兩條 SQL 語句可以完成的任務(wù)就需要完整的過程化程序來完成。

【編輯推薦】

  1. Oracle數(shù)據(jù)庫中的dual表對(duì)應(yīng)DB2 SYSIBM
  2. Orac數(shù)據(jù)庫到DB2移植的正確破解方案
  3. Oracle到DB2數(shù)據(jù)移植中的操作與注意事項(xiàng)
  4. DB2數(shù)據(jù)庫實(shí)現(xiàn)Oracle功能的操作技巧與經(jīng)驗(yàn)
  5. DB2數(shù)據(jù)庫實(shí)現(xiàn)Oracle功能的操作技巧與經(jīng)驗(yàn)
責(zé)任編輯:佚名 來源: UPS與機(jī)房
相關(guān)推薦

2009-02-26 09:34:16

性能優(yōu)化DB2數(shù)據(jù)庫

2010-08-17 17:29:06

DB2性能優(yōu)化

2010-08-02 08:40:43

DB2數(shù)據(jù)庫性能

2010-08-17 16:24:32

IBM DB2數(shù)據(jù)庫

2010-08-04 13:37:43

2011-03-02 17:56:40

DB2數(shù)據(jù)庫

2010-08-13 10:43:49

IBM DB2數(shù)據(jù)庫

2010-08-13 15:42:22

DB2數(shù)據(jù)庫分區(qū)

2010-11-02 11:49:18

SQL SERVER連

2010-08-18 13:49:01

DB2數(shù)據(jù)庫

2010-08-12 09:49:51

優(yōu)化DB2數(shù)據(jù)庫備份

2010-08-11 12:43:45

DB2數(shù)據(jù)庫調(diào)優(yōu)

2010-08-17 09:11:42

DB2數(shù)據(jù)庫備份性能

2011-03-21 09:51:04

DB2性能優(yōu)化

2010-08-12 15:43:24

DB2數(shù)據(jù)庫備份

2010-08-02 09:52:19

DB2數(shù)據(jù)庫優(yōu)化

2010-07-27 14:33:24

DB2數(shù)據(jù)庫

2010-08-16 14:45:15

DB2數(shù)據(jù)庫

2009-07-06 17:34:26

遠(yuǎn)程復(fù)制DB2

2010-08-11 14:32:55

DB2數(shù)據(jù)庫調(diào)優(yōu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)