Heim > Backend-Entwicklung > PHP-Tutorial > mysql查询超慢,该怎么解决

mysql查询超慢,该怎么解决

WBOY
Freigeben: 2016-06-13 12:22:41
Original
1000 Leute haben es durchsucht

mysql查询超慢
SELECT a.`order_id` , a.`delivery_date` , a.`buyer_name` , a.`order_status` , a.`account` , a.`delivery_warehouse`
FROM `Sale_Order` a
LEFT JOIN `Sale_Order_de` b ON a.`order_id` = b.`order_id`

GROUP BY a.`order_id`
ORDER BY find_in_set( a.`order_status` , '4,1,5,6,2,0,7' ) 

以上查询很慢,需要3-5秒,为什么用left join因为我还要有筛选条件的,现在不加条件都超慢

explain结果:

id  select_type  table  type  possible_keys  key  key_len  ref  rows  Extra 
1  SIMPLE  a  ALL  NULL NULL NULL NULL 38472  Using temporary; Using filesort
1  SIMPLE  b  ref  OrderId,order_id,order_id_2,order_id_3,order_id_4,order_id_5,order_id_6  OrderId  152  demo.a.order_id  1  Using index


两个表各自才3万多记录,怎么会这么慢呢?是不是a表没用到索引??但我每个字段都点了索引的



------解决思路----------------------
遇见你这样的情况时,我平时都是这样做的:
1、先把left join及后面的注释掉,然后加上a表相关的where(你不加条件字段索引肯定不生效)
2、然后看执行情况,依次打开注释部分,再看执行情况,那块拖了后腿,我就找那块儿麻烦

还有就是不用每个字段都加索引;
selct_type 是 ALL是因为你没有加条件扫的全表;
------解决思路----------------------
ORDER BY find_in_set( a.`order_status` , '4,1,5,6,2,0,7' )  是严重影响性能之一

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage