查詢效能優化

2021-10-24 13:38:11 字數 1390 閱讀 9326

查詢的最基本的原因是 訪問的資料太多。可以通過減少訪問的資料兩進行優化;具體步驟如下:

確認應用程式是否檢索大量超過需要是資料–訪問行列太多

# 返回三個表的全部資料列

select * from sakila.actor

inner join sakila.film_actor using(actor_id)

inner join sakila.film using(film_id)

where sakila.film.title= 'academy dinosaur';

# 改進後的寫法如下

select sakila.actor.* from sakila.actor

mysql伺服器層是否在分析大量超過需要的資料行

衡量查詢開銷的三個指標如下:

掃瞄的行數:

返回的行數

訪問型別

一般mysql能夠使用如下三種方式引用where條件,從好到壞依次為:

一般的優化方法:

# 原始查詢

delete from messages where created < date_sub(now(),interval 3 month)

# 迴圈優化為:

rows_affected=0

do {

rows_affected=do_query(

"delete from messages where created 0

# 原始語句

select * from tag

join tag_post on tag_post.tag_id=tag.id

join post on tag_post.tag_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,456,9098,8904);

優點如下:

讓快取的效率更高。已經快取的內容,就不必再繼續讀取,可以直接跳過

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

在應用層做關聯,可以更容易對資料庫進行拆分,共容易做到高效能和可擴充套件

查詢本身效率也可能會有所提公升。使用in()代替關聯查詢,可以讓mysql按照id順序進行查詢,可能比隨機的關聯要更加高效,

可以減少冗餘記錄的查詢。避免資料庫層的重複資料訪問。

在應用層中實現了雜湊關聯,而不是使用mysql的陶傑迴圈關聯。某些場景雜湊關聯的效率要高很多。

查詢效能優化

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

查詢效能優化

查詢後面加limit 只查詢需要的列 如果查詢相同的資料,可以用快取儲存起來 mysql最簡單衡量查詢開銷的三個指標 響應時間,掃瞄行數,返回行數 響應時間包括服務時間和排隊時間,服務時間就是資料庫處理這個查詢所花的時間,排隊時間一般常見的是i o和鎖等待所花大的事件 理想的情況下,掃瞄行數等於返回...

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

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