提公升MySQL查詢效能常用套路

2021-10-08 21:02:34 字數 657 閱讀 7107

前言

我們查詢資料庫通常會多表關聯,當資料量大時,很多時候我們可以多表查詢分成多次 sql 查詢,來提高效能。

如:

select * from tag

join tag_post on tag_post.tag_id=tag.id

join post on tag_post.post_id=post.id

where tag.tag=』mysql』;

可以分解成下面這些查詢來代替:

select * from tag where tag=』mysql』;

select * from tag_post where tag_id=1234;

select * from post where id in(123,456,567,9989,8909);

用分解關聯查詢的方式重構查詢具有如下優勢:

許多應用程式可以方便地快取單錶查詢對應的結果物件。另外對於mysql的查詢快取來說,如果關聯中的某個表發生了變化,那麼就無法使用查詢快取了,而拆分後,如果某個表很少改變,那麼基於該錶的查詢就可以重複利用查詢快取結果了。

引自高效能mysql:

資料割接效率提公升常用套路

1 歸檔與非歸檔 在割接前將資料改為非歸檔模式,在割接後再改回來。同時做全備。改為非歸檔模式會大大減少寫日誌的開銷。2 主外來鍵 索引 在割接前,需要先失效主外來鍵 索引或者直接drop掉。割接後再恢復,回覆索引,大一點的表並行建立,再取消並行。3 空間換時間 a 資料量太大時,應該分模處理。b 頻...

mysql常用效能查詢語句

檢視mysql本次啟動後的執行時間 單位 秒 show status like uptime 檢視select語句的執行數 show status like com select 檢視insert語句的執行數 show status like com insert 檢視update語句的執行數 sh...

MYSQL效能提公升規範

每每在處理資料庫,總會遇到一些效能瓶頸,優化非常棘手,所以需要遵循某些規範,可根據自身業務要求協調以下規範。強制 1 儲存引擎必須使用innodb 解讀 innodb支援事物 行級鎖 併發效能更好,cpu及記憶體快取頁優化使得資源利用率更高。強制 2 每張表必須設定乙個主鍵id,且這個主鍵id使用自...