5個讓DBA愛上你的SQL技巧
本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
我的一個同事Martin Masarik,SQLde的CEO,跟我談起了他的一個DBA朋友,他管理著一個國際銀行的Oracle資料庫,資料規模約2TB。Martin Masarik曾問他:“什麼樣的SQL問題能讓你氣憤到豎起頭髮?”,他總結了以下幾點,都是經驗之談:
一、不要在索引列上呼叫Function
這樣做將會阻止資料庫使用這個索引,這個問題甚至可以影響這個分割槽表,因為這樣做的話將不會從指定的分割槽中讀取資料,而是掃描整一個表空間。對於大資料量的資料表,這將是效能上的一場大災難。
不要這樣做:
WHERE TIME_ID+14 > to_number(to_char(sysdate,'J'))
應該這樣做:
WHERE TIME_ID > to_number(to_char(sysdate-14,'J'))
二、使用Analyze對複雜SQL的優化
如果你不這樣做,將意味著:你拒絕使用資料庫的查詢優化器,也失去了使用優化連線的機會。假設你建立了一張擁有100萬條記錄的臨時表,如果不對其進行分析,那麼優化器將無法從現有的線索中獲取表中真正的內容,於是它只能決定使用巢狀迴圈連線來一行行地掃描資料表,如果資料量不大,可能我們感覺不到效能的損失,但是隨著資料集的增長,你的資料庫效能會越來越差。
建議這樣做:
ANALYZE TABLE <TABLE_NAME> COMPUTE STATISTICS
三、將複雜的SQL分成幾步執行
把SQL想象成披薩,我想你應該不會一下子將整個披薩吞到嘴裡嚼爛它吧。
對於建立一個複雜的SQL查詢,我們最好將其分成3-4個步驟,SQL越簡單,優化器的效果就越好,另外,對每一張資料表中的資料也越容易除錯。
四、只有在必要的時候才使用Distinct
這是一個非常好的經驗法則,Distinct經常被用在返回2條或2條以上重複記錄的SQL查詢中,使用Distinct,將會過濾掉重複的資料記錄。但是使用Distinct的目的一定要明確,當你確定返回的記錄一定是唯一的時候才能使用,比如使用者id。濫用Distinct將會出現不可預知的錯誤,比如多表連線查詢的情況。
五、合理建立索引
最後一點就是合理建立表索引,簡單來說,假如有一張10萬條記錄的資料表,你可能經常會查詢這樣的資訊:“我的某個客戶資訊在這張表中嗎?”。如果使用了索引,那麼檢索這條客戶資訊將非常迅速,否則資料庫優化器將會選擇全表掃描,這在大資料量的情況下簡直就是噩夢。
譯文連結:http://www.codeceo.com/article/5-sql-tips-dba-love-you.html
英文原文:5 Tips for writing efficient SQL queries that get you some DBA love
翻譯作者:碼農網 – 小峰
[ 轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]
相關文章
- 10個理由讓你愛上程式設計師程式設計師
- Emmet,讓你愛上敲程式碼
- 讓谷歌愛上你的網站的14個方法–資料資訊圖谷歌網站
- 7個讓你驚歎的HTML技巧HTML
- 5個簡單實用的MacOS技巧讓你的Mac工作效率翻倍Mac
- 讓你更好使用 Typescript 的11個技巧TypeScript
- 有趣的十個Python實戰專案,讓你瞬間愛上Python!Python
- [譯] Flutter — 五個你會愛上它的原因Flutter
- DBA 常用的10個SQLSQL
- htc vive大推薦遊戲 讓你愛上VR眼鏡遊戲VR
- 能讓你受益匪淺的10個css使用技巧CSS
- 10個說話技巧讓你的語言有魅力
- 39個讓你受益的HTML5教程HTML
- 6條命令,讓你的愛機裸奔
- 四個好用到爆的excel技巧,讓你加薪不加班!Excel
- 讓你的 Node.js 應用跑得更快的 10 個技巧Node.js
- 一個小技巧,讓您的ABAP OPEN SQL具有自描述效果SQL
- 艾偉也談專案管理,如何讓網民愛上你的網站專案管理網站
- 你應該瞭解的 5 個 JavaScript 除錯技巧JavaScript除錯
- 如何讓海外玩家愛上我們的遊戲?遊戲
- 5個平時容易讓人忽略的Excel技巧,10分鐘幫你搞定2小時的工作Excel
- 改進你的c#程式碼的5個技巧(三)C#
- 改進你的c#程式碼的5個技巧(四)C#
- PostgreSQL DBA(61) - zedstore:想說愛你不容易SQLZed
- 幾個小技巧讓你的Python程式碼更PythonicPython
- 愛上 SQLAlchemy 的 10 個理由SQL
- 五個小技巧讓你寫出更好的 JavaScript 條件語句JavaScript
- 8個酷炫的GitHub技巧,讓你看起來像大佬一樣!Github
- 11個技巧讓那些程式設計師對你刮目相看程式設計師
- 別讓速度限制了你的工資!這5個實用高效的Word技巧趕快學起來!
- 征服Excel VBA:讓你工作效率倍增的239個實用技巧Excel
- [譯] 五個小技巧讓你寫出更好的 JavaScript 條件語句JavaScript
- 5款Linux桌面環境推薦,你最愛哪個?Linux
- 遊戲化設計(二):利於遊戲心理學,讓使用者愛上你的產品遊戲
- 讓你聽見的 HTML5HTML
- VS Code:讓你工作效率翻倍的23個外掛和23個編輯技巧
- 使用Java API的5個技巧JavaAPI
- 豐田KATA:5個問題,讓你的工作團隊參與!