當前位置:首頁 >  運營 >  產品運營 >  正文

分享SQL SELECT語句優(yōu)化的5個簡單技巧

 2017-02-01 17:47  來源: 用戶投稿   我來投稿 撤稿糾錯

  阿里云優(yōu)惠券 先領券再下單

針對SQL SELECT語句進行性能調優(yōu)是一個非常耗時的工作,可以說任何一個工程都不具備足夠的時限讓我們來完成這項工作,因此從日常的編寫和測試過程中總結技巧,是當前優(yōu)化性能的主要措施。那么有哪些較為快捷的技巧呢?

第一,整理數據集大小

當庫表中僅有幾千行數據時,查詢指令總是可以順利執(zhí)行,但是當應用程度增加,庫表容量也增加時,查詢速度自然會降低不少,面對這種情況,我們可采取的解決辦法其實十分簡單,首先檢查SELECT語句中用到的表是否可以應用WHERE子句進行過濾,然后我們的查詢語句帶有子查詢時,一定要將其進行過濾,而且過濾時針對的是內部語句而不是外部語句。

第二,限定選擇需要的字段

使用帶有報告和分析功能的應用程序時,有時報告性能低是因為報告工具必須對收到的、帶有詳細形式的數據做聚合操作。

偶爾查詢也可能運行地足夠快,但你的問題可能是一個網絡相關的問題,因為大量的詳細數據通過網絡發(fā)送到報告服務器。

當使用一個面向列的DBMS時,只有你選擇的列會從磁盤讀取。在你的查詢中包含的列越少,IO開銷就越小。

第三,解除不必要的字段

編寫SQL語句是一個過程,通常需要大量編寫和測試SQL語句的迭代過程。開發(fā)過程中,一些同學常常會手動加入一些額外的表,這些表對于返回SQL代碼沒有直接的影響,往往在大家跑完代碼并獲得想要的結果后忽略了之前加入的這些表和字段。這就好像手機中的照片,一張兩張?zhí)撚罢掌⒉粫鯓?,但是它仍舊占據了我們的內存,因此每次運行完程序,我都建議大家刪除那些對最終的返回數據沒有任何影響和作用的表,通過移除與那些不必要表的JOINS操作,我們可以減少大量數據庫必須執(zhí)行的流程。

第四,移除外部連接查詢

當然這個方法并不像說起來這么簡單,能不能采用這種方法完全取決于它所帶來的影響有多大,即會改變多少表的內容。當影響不大時,具體可以這樣操作,在相鄰表中借助占位符進行OUTER JOINS刪除操作,比如當你有以下的庫表時,可通過定義OUTER JOINS來確保返回所有的數據:

那么,在customer表的行中增加一個占位符,并更新sales表中的所有NULL值到占位符就可以有效刪除OUTER JOINS,不僅如此,還能避免其他開發(fā)人員編寫額外的語句。

第五,刪除JOIN和WHERE子句中的計算字段

同樣,與上述方法相對應的是,刪除join等字段也要根據其可能帶來的調整大小來判斷,我們可以將連接語句中用到的計算字段作為一個新字段在表中創(chuàng)建。比如下面的SQL語句:

在sales表中利用年和月增加一列,同樣可以提高性能。更新后的SQL語句將如下:

以上內容均來自論文發(fā)表,轉載請注明,謝謝。

申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!

相關文章

熱門排行

信息推薦