查詢效能優化

2022-03-22 11:17:37 字數 1086 閱讀 9234

查詢後面加limit;

只查詢需要的列;

如果查詢相同的資料,可以用快取儲存起來;

mysql最簡單衡量查詢開銷的三個指標:響應時間,掃瞄行數,返回行數;

響應時間包括服務時間和排隊時間,服務時間就是資料庫處理這個查詢所花的時間,排隊時間一般常見的是i/o和鎖等待所花大的事件;

理想的情況下,掃瞄行數等於返回行數,但很少發生,如關聯查詢,掃瞄多行才能生成結果集的一行;

在explain語句中type列反應了訪問型別,訪問型別有很多種,從全表掃瞄到索引掃瞄,範圍掃瞄,唯一索引查詢,常數引用等,列出來的這些,速度是由快到慢,掃瞄行數由多到少;索引的列,主鍵好過普通索引,整型好過字串型別;

乙個複雜的查詢還是多個簡單的查詢

mysql內部每秒能掃瞄記憶體中上百萬條資料,而mysql響應資料給客戶端就慢多了,在相同的條件下,盡可能少的查詢;

切分查詢

比如刪除三個月前的資料;

delete from messages where created 如果資料量太大的話,伺服器壓力會很多;

如果你改成

rows_affected=0

do while rows_affected >0

這樣就可以分解伺服器壓力;

分解關聯查詢

對每個單錶進行一次單錶查詢,然後將結果在應用程式中進行關聯;

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 post.id in (123,435,4563);

優勢:讓快取的效率更高;

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

在應用層做關聯,更容易對資料庫進行拆分,更容易提高高效能和可拓展;

可以減少冗餘記錄的查詢;

查詢效能優化

查詢效能優化 查詢的生命週期 客戶端 伺服器 查詢快取 命令解析 預處理 優化器優化 查詢執行引擎 查詢生命週期每一子任務響應時間都可能慢,但核心是執行任務。分析步驟 確認是否在檢索大量超過需要的資料。訪問了太多行或列 確認伺服器是否在分析大量超過需要的資料行。2.1 衡量查詢開銷三大指標 2.掃瞄...

查詢效能優化

查詢的最基本的原因是 訪問的資料太多。可以通過減少訪問的資料兩進行優化 具體步驟如下 確認應用程式是否檢索大量超過需要是資料 訪問行列太多 返回三個表的全部資料列 select from sakila.actor inner join sakila.film actor using actor id...

mysql查詢效能優化 MySQL 查詢效能優化

在日常開發中,程式設計師寫的最多的除了bug之外,應該算是sql語句了。sql的質量影響了程式的響應速度,只有利用mysql的特性,才能讓mysql更有效的執行查詢sql,充分發揮mysql的優勢,並避開它的弱點。為什麼查詢速度會慢?在編寫sql之前,需要清楚一點 真正重要的是響應時間。如果我們把查...