一條sql執行過長的時間,你如何優化,從哪些方面?

2021-10-23 01:52:49 字數 444 閱讀 8010

1、檢視sql是否涉及多表的聯表或者子查詢,如果有,看是否能進行業務拆分,相關字段冗餘或者合併成臨時表(業務和演算法的優化)

2、涉及聯表的查詢,是否能進行分表查詢,單錶查詢之後的結果進行字段整合

3、如果以上兩種都不能操作,非要鍊錶查詢,那麼考慮對相對應的查詢條件做索引。加快查詢速度

4、針對數量大的表進行歷史表分離--分庫分表(如交易流水表)

水平分表--行級a表100w資料,資料0-50w乙個表,50-100w乙個表

垂直分表--列級a表10個字段,欄位0-5乙個表,5-10乙個表

5、資料庫主從分離,讀寫分離,降低讀寫針對同一表同時的壓力,至於主從同步,mysql有自帶的binlog實現 主從同步

6、explain分析sql語句,檢視執行計畫,分析索引是否用上,最左匹配索引,分析掃瞄行數等等

7、檢視mysql執行日誌,看看是否有其他方面的問題

一條SQL語句如何被執行

select from t where id 10 寫乙個查詢語句不難,但你知道一條sql語句被執行的過程嗎?下圖是mysql的基本架構圖。server層類似中介軟體,主要接受使用者請求,解析請求等。儲存引擎則是底層核心,負責資料的訪問。客戶端要想使用mysql,必須先和mysql建立乙個連線,聯結...

一條SQL查詢語句是如何執行的

mysql可以分為server層和儲存引擎層兩部分 一條普通的查詢語是怎樣執行並返回結果了 聯結器查詢快取 大多數情況下建議不要使用查詢快取,查詢快取往往弊大於利。查詢快取的失效非常頻繁,只要有對乙個表的更新,這個表上所有的查詢快取都會被清空。分析器優化器 比如你執行下面這樣的語句,這個語句是執行兩...

一條SQL查詢語句是如何執行的?

我們在寫sql的時候crud這些基本的操作想必大家已經是得心應手了,專欄會更傾向於sql優化與執行過程模型的角度重新學習sql,方便大家在做效能優化上更加熟練。select from t where id 10 接下來我們來拆解一下這個sql語句,從中就可以看出sql在mysql中各個模組的執行過程...