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

猜你喜欢

转载自blog.csdn.net/Zzhou1990/article/details/82683444