Rumah > pembangunan bahagian belakang > tutorial php > mysql查询超慢,该怎么解决

mysql查询超慢,该怎么解决

WBOY
Lepaskan: 2016-06-13 12:22:41
asal
998 orang telah melayarinya

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' )  是严重影响性能之一

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan