久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

優化SQL SELECT語句性能的6個簡單技巧分別是什么

149次閱讀
沒有評論

共計 1654 個字符,預計需要花費 5 分鐘才能閱讀完成。

本篇文章給大家分享的是有關優化 SQL SELECT 語句性能的 6 個簡單技巧分別是什么,丸趣 TV 小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著丸趣 TV 小編一起來看看吧。

SELECT 語句的性能調優有時是一個非常耗時的任務,在我看來它遵循帕累托原則。20% 的努力很可能會給你帶來 80% 的性能提升,而為了獲得另外 20% 的性能提升你可能需要花費 80% 的時間。除非你在金星工作,那里的每一天都等于地球上的 243 天,否則交付期限很有可能使你沒有足夠的時間來調優 SQL 查詢。根據我多年編寫和運行 SQL 語句的經驗,我開始開發一個檢查列表,當我試圖提高查詢性能時供我參考。在進行查詢計劃和閱讀我使用的數據庫文檔之前,我會參考其中的內容,數據庫文檔有時會很復雜。我的檢查列表絕對說不上全面或科學,它更像是一個保守計算,但我可以說,遵循這些簡單的步驟大部分時間我確實能得到性能提升。檢查列表如下。

檢查索引

在 SQL 語句的 WHERE 和 JOIN 部分中用到的所有字段上,都應該加上索引。進行這個 3 分鐘 SQL 性能測試。不管你的成績如何,一定要閱讀那些帶有信息的結果。

限制工作數據集的大小

檢查那些 SELECT 語句中用到的表,看看你是否可以應用 WHERE 子句進行過濾。一個典型的例子是,當表中只有幾千行記錄時,一個查詢能夠很好地執行。但隨著應用程序的成長,查詢慢了下來。解決方案或許非常簡單,限制查詢來查看當前月的數據即可。當你的查詢語句帶有子查詢時,注意在子查詢的內部語句上使用過濾,而不是在外部語句上。

只選擇你需要的字段額外的字段

通常會增加返回數據的紋理,從而導致更多的數據被返回到 SQL 客戶端。另外:

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

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

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

移除不必要的表

移除不必要的表的原因,和移除查詢語句中不需要的字段的原因一致。編寫 SQL 語句是一個過程,通常需要大量編寫和測試 SQL 語句的迭代過程。在開發過程中,你可能將表添加到查詢中,而這對于 SQL 代碼返回的數據可能不會有任何影響。一旦 SQL 運行正確,我發現許多人不會回顧他們的腳本,不會刪除那些對最終的返回數據沒有任何影響和作用的表。通過移除與那些不必要表的 JOINS 操作,你減少了大量數據庫必須執行的流程。有時,就像移除列一樣,你會發現你減少的數據又通過數據庫返回來了。

移除外部連接查詢

這說起來容易做起來難,它取決于改變表的內容有多大的影響。一個解決辦法是通過在兩個表的行中放置占位符來刪除 OUTER  JOINS 操作。假設你有以下的表,它們通過定義 OUTER JOINS 來確保返回所有的數據:

解決辦法是在 customer 表的行中增加一個占位符,并更新 sales 表中的所有 NULL 值到占位符。

你不只是刪除了對 OUTER  JOIN 操作的依賴,同時標準化了沒有客戶的銷售人員如何表示。其他開發人員不必編寫額外語句,例如 ISNULL(customer_id,“No customer  yet”)。

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

這是另外一個有時可能說起來容易做起來難的技巧,它取決于你更改表模式的權限大小??梢詫⑦B接語句中用到的計算字段作為一個新字段在表中創建。給出以下 SQL 語句:

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

上邊的建議可以歸結為以下幾點:

檢查索引

在所需要的最小數據集上操作

移除不必要的字段和表

移除你 JOIN 和 WHERE 子句中的計算操作

以上就是優化 SQL SELECT 語句性能的 6 個簡單技巧分別是什么,丸趣 TV 小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-19發表,共計1654字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 天柱县| 玉林市| 睢宁县| 合肥市| 鹤山市| 饶平县| 普格县| 永平县| 威信县| 微山县| 襄汾县| 商南县| 开封市| 苗栗县| 张家界市| 赣榆县| 个旧市| 宝应县| 滕州市| 错那县| 佳木斯市| 吉隆县| 镇康县| 天等县| 夏河县| 临夏市| 中宁县| 玉田县| 佛教| 黔南| 古浪县| 建水县| 文昌市| 来安县| 临洮县| 梁河县| 调兵山市| 吉木萨尔县| 依安县| 沿河| 扬中市|