我有一個緩慢(1.4秒)的查詢,一直在困擾着我一段時間,所以我只是覺得我會把它,看看是否有人可以幫助我優化我的索引,加快它:優化mysql索引
select sql_calc_found_rows t.id, q.im_id, concat(t.si_id, ' ', t.de), q.date, q.das, q.dac, u.name, q.ac, q.st
from t300q q
left join t300 t on t.id = q.con_id
left join users u on u.id = q.user_id
order by q.date desc limit 0,100
sql中解釋結果:
SIMPLE q ALL 89126 Using filesort
SIMPLE t eq_ref PRIMARY PRIMARY 4 db.q.con_id 1
SIMPLE u eq_ref PRIMARY PRIMARY 4 db.q.user_id 1
會話統計:
Handler_read_first = 0
Handler_read_key = 177934
Handler_read_next = 23
Handler_read_prev = 679
Handler_read_rnd = 15
Handler_read_rnd_next = 89127
,我有以下指標:
t.id - primary key
q.con_id |
q.date | - all form a single index
q.user_id |
u.id - primary key
,你可以看到從處理程序統計表q
的大小爲89126行。
這不是一個大問題,但如果可能的話,我希望速度低於1秒。
'q.date '應該有索引? http://www.mysqlperformanceblog.com/2006/09/01/order-by-limit-performance-optimization/ – osgx
完全不回答你的問題,但是你有選擇在PostgreSQL下嘗試相同的查詢嗎?我通常可以將10個表的連接數以百萬計的行數減少到幾百毫秒。在需要時自行組合索引是非常好的。 –
不幸的是我沒有postgresql – mulllhausen