1. 程式人生 > >mysql-簡單的sql優化

mysql-簡單的sql優化

一、兩表關聯查詢-分頁

a表資料20W,B表資料5條

①  這一種效率很低,一個索引沒用上,基本上全表,再關聯B表5條資料、效率很低,執行時間2s

select * from nmd_apply_info a, channel_info b 
 where 1=1  and a.app_id = b.app_id  ORDER BY create_time DESC LIMIT 0,10

②第二種方式,查詢出想要的十條以後,再和B表匹配,效率顯著提升,執行時間幾十毫秒到上百毫秒

SELECT * FROM ( SELEC * FROM nmd_apply_info WHERE 1 = 1 ORDER BY create_time DESC LIMIT 0, 10 ) a
 LEFT JOIN channel_info b ON a.app_id = b.app_id

③ 第三條sql

按照我的理解:結果按照時間排序,如果不加第二行強制使用時間索引,速度回很慢2S左右,用了以後幾十毫秒(10w左右的資料用索引非常快),

但是如果用主鍵匹配查詢時候,可能強制使用了時間索引,導致只能進行非索引查詢,這個時候匹配一條也很慢,必須關掉強制索引

SELECT * FROM nmd_apply_info n 
 -- FORCE INDEX ( apply_info_create_time_index )
 LEFT JOIN channel_info c ON n.app_id = c.app_id WHERE 1 = 1  
-- and apply_no = '主鍵索引'
 ORDER BY n.create_time DESC
 LIMIT 0, 10