閱讀 SQL語言藝術》實踐一

2022-03-01 17:35:05 字數 1010 閱讀 4075

【摘要】

動作豐富的sql語句

action-packed sql statements

此節結論:

儘量減少過程邏輯出現在sql語句,比如if-else之類;能使用一句sql不要分解為過程邏輯,盡量由資料庫系統來提高更高的效率。

為了說明這個問題,我簡要測試以下語句:

a、update tbuser set loginpassword = 222222 where userid = 10020774

begin

if exists(select userid from tbuser with(nolock) where userid = 10020774 and birthday is null)

begin

update tbuser set birthday = tbuserheadpic.ctime from tbuserheadpic where tbuser.userid = 10020774 and tbuser.birthday is null and tbuserheadpic.userid = 10020774 and tbuserheadpic.isused = 1;

endend

b、update tbuser set birthday = tbuserheadpic.ctime,loginpassword = 222222 from tbuserheadpic where tbuser.userid = 10020776 and tbuserheadpic.userid = 10020776 and tbuserheadpic.isused = 1;

a、b兩句在查詢分析器中執行,得出以下結論:

滿足birthday=null條件下,a所有語句執行效率佔68%,b語句佔32%

不滿足birthday=null條件下,a所有語句執行效率佔49%,b語句佔51%

此例的sql邏輯儘管有些混亂,但表述一點:從另一張表的資料賦值到另一表的過程。但在效率上下面一句的效率明顯優勢。

個人觀點

閱讀 SQL語言藝術》實踐二

摘要 sql的進攻式程式設計 offensivecoding with sql 與之對應防禦式程式設計code defensively 在開始處理之前先檢查所有引數的合法性。進攻式程式設計的本質特徵是 以合理的可能性 reasonable probabilities 為基礎。比較二者 常規的程式設計...

SQL語言藝術

內容介紹 本書分為12章,每一章包含許多原則或準則,並通過舉例的方式對原則進行解釋說明。這些例子大多來自於實際案例,對九種sql經典查詢場景以及其效能影響討論,非常便於實踐,為你的實際工作提出了具體建議。本書適合sql資料庫開發者 軟體架構師,也適合dba,尤其是資料庫應用維護人員閱讀。您現在正在檢...

sql語言藝術2

先定義問題,再解決問題 problem definition before solution 一知半解是危險的。人們常在聽說了新技術或特殊技術之後 有時的確很吸引人 試圖採 用它作為新的解決方案。普通開發者和設計師通常會立即採納這些新 解決方案 直到後來才 發現它們會產生許多後續問題。現成的解決方案...