重構查詢的方式

2021-09-27 08:57:35 字數 682 閱讀 1484

在設計查詢的時候,應該設計乙個複雜查詢還是多個簡單查詢呢?

傳統實現中,總是強調要在資料庫層完成盡可能多的工作,這樣做是因為以前總是認為網路通訊、查詢解析和優化是一件代價很高的事情。

但是這樣的想法對mysql並不適用。

mysql執行多個小查詢已經不是問題。理由包括,1,mysql的連線和斷開都很輕量級,在返回乙個小的結果集方面很高效。2,現代網速有了很大提公升,無論頻寬還是延遲。3,通用伺服器上每秒執行10萬個查詢,即使千兆網絡卡也能滿足每秒2000次查詢。

mysql內部每秒能夠掃瞄記憶體中的上百萬行資料,相比之下,mysql響應資料給客戶端就慢得多了。

對於大查詢的優化方式是分而治之,將大查詢拆分為小查詢,每個查詢的功能完全一樣,只完成一部分工作,每次只返回一小部分查詢結果。

舉例,刪除舊的資料的例子。定期的清理大量資料時,如果使用乙個大的語句一次性完成的話,則可能需要一次鎖住很多資料、佔滿整個事務日誌、耗盡系統資源、阻塞很多小但是重要的查詢。可以每次只刪除一萬條資料。

很多高效能應用都會對關聯查詢進行分解。簡單的說,可以將關聯查詢拆分為,對每乙個表進行一次單錶查詢,然後將結果在應用程式中進行關聯。

拆分後的優勢為:

讓快取更高效。對查詢快取來說,如果關聯中的某個表發生了變化,那麼就無法使用查詢快取了,而拆分後,可以充分利用未變化的表的查詢快取。

查詢拆分後,執行單個查詢可以減少鎖的競爭。

mysql重構 MySQL重構查詢的方式

在優化有問題的查詢時,目標應該是找到乙個更優的方法獲得實際需要的結果 而不一定總要從mysql獲取一模一樣的結果集。有時候可以查詢轉換一種寫法讓其返回一樣的結果,但是效能更好。但也可以通過修改應用 用另一種方式完成查詢,最終達到一樣的目的。這裡我們將介紹如何通過這種方式來重構查詢,並展示合適需要使用...

4 3 重構查詢方式

設計查詢的時候乙個需要考慮的重要問題是,是否需要將乙個複雜的查詢分成許多簡單的查詢。mysql內部每秒能夠掃瞄記憶體中上百萬行資料,相比之下,mysql響應資料給客戶端就慢的多了。所以,有時候將乙個大的查詢分解為多個小查詢是有必要的。4.3.1 切分查詢 乙個大查詢如果一次性執行的話,可能一次鎖住很...

十種重構方式

1 提取class 適用情況 當乙個類 顯得太長,或者他的行為不夠集中。這時我們就得將他們分成粘合度高的一部分一部分。2 提取介面 適用情況 當我們有很多理由要提取介面時 比如 用抽象的方式實現乙個具體物件這樣我們就可以更方便的模仿物件。3 提取方法 適用情況 當乙個方法 顯得太長,或者其中的邏輯太...