求教关于sql优化的问题

问题描述

各位好,情况是这样的,我们有一个订单查询的页面,查询条件除了订单相关内容(比如价格,时间,发货地址)以外,还有产品,用户信息等查询,现在订单表单表数据大概10W左右,出现了查询的卡顿
(订单产品表(order_detail)示一个订单多个产品的存储)

问题出现的环境背景及自己尝试过哪些方法

我这边按照网上一些方法,瓶颈在于排序,如果先把订单表排序再关联其他表,就很快,但是如果加上产品或者用户信息查询就很慢了

相关代码

粘贴代码文本(请勿用截图)
explain SELECT

`o`.`ID`,
`o`.`orderID`,
`u`.`userID`,
`u`.`userName`,
`u`.`telephone`,
`orderInputTime`,
....
....

FROM

`sys_order` `o`

INNER JOIN sys_order_detail d ON d.orderID = o.orderID
INNER JOIN user u ON u.userID = o.userID
INNER JOIN product p ON p.prodID = d.prodID
WHERE

`orderStatus` <> '删除'

AND p.prodName LIKE '%XX产品%'
AND orderSource <> 3
GROUP BY

`o`.`orderID`

ORDER BY

`orderInputTime` DESC

LIMIT 0,
15

你期待的结果是什么?实际看到的错误信息又是什么?

这个是explain截图
TIM图片20200403114448.png
现在想解决的问题是如何处理这种大量数据关联,再排序所造成的查询缓慢

阅读 2.3k
2 个回答

就like前模糊查询与<> 不等于这两个,都不走索引,就注定了这条sql不会快到哪里了

搜索了许多资料以后,现在暂时的处理办法是
先group by优化缩小结果集再排序
image.png

这样就快很多了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题