前言
我們查詢資料庫通常會多表關聯,當資料量大時,很多時候我們可以多表查詢分成多次 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使用自...