mysql中sql優化小心得

2021-07-01 23:32:49 字數 807 閱讀 3320

1,以前用mysql不多,不過寫sql時都會考慮效率,主要是考慮先盡量篩選主表的資料。

而今天寫了個sql,從幾十萬條資料中做累計,還要和其他表結合獲得使用者資訊,為了簡潔寫成如下形式

select c.name,sum(a.cnt)  from  a,b,c

where a.id=b.uid

and a.id=c.id

group by a.id

order by a.id

從程式上看沒有任何的問題,a和c是1:1,a和b是1:n

結果幾十萬條資料要6秒左右。

而和乙個和他類似的更大的sql,執行居然要30秒。

於是考慮建立索引,但是並沒有很大的改觀。

後來改為如下方法,速度就發生了質的變化,不到1秒即完成。

select c.name,a.cnt from (

select a.id,sum(a.cnt)  cnt

from a,b

where 

acc.id = b.uid

group by a.id) a,

cwhere

a.id = c.id

order by a.id

2,另外就是concat和substring的效率

有個關係是a表的id要和b表的sid結合。id的形式是1,2,3,而sid的資料形式是s1,s2,s3。

開始是使用order by a.id

concat('s',id)=sid,要6秒執行完成。

而轉成id=substring(sid,2)可以縮減到3秒完成。

order by a.id

mysql 優化心得

mysql的優花其實是個艱難的工作,要搞的東西太多了,之前在 中摘了一些原則,最近對乙個100多萬條資料的表做優花時,有如下心得 1 取必須要用的資料 這裡對於select 語句中只選有用的字段,這樣的原則就肯定人人都知道的了。但關鍵的是,要從全域性考慮問題,比如我的這個應用 是每個新聞網頁的跟帖,...

mysql 優化心得

mysql的優花其實是個艱難的工作,要搞的東西太多了,之前在 中摘了一些原則,最近對乙個100多萬條資料的表做優花時,有如下心得 1 取必須要用的資料 這裡對於select 語句中只選有用的字段,這樣的原則就肯定人人都知道的了。但關鍵的是,要從全域性考慮問題,比如我的這個應用 是每個新聞網頁的跟帖,...

MySQL 中sql 語句 優化

參考文章 首先這個問題一直存在,但是在實際開發中還是寫出各種效能差sql。今天就一點點的來梳理一下,恰好我目前工作中的sql 寫的很慢,這篇文章剛好可以幫我去優化一下我的 1.乙個最大的原則就是能夠使得sql用到索引。怎麼用到索引,我們就來分析一下explain的用法 我關注的有乙個字段就是rows...