首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化MySQL查询-运行时间长

优化MySQL查询-运行时间长
EN

Stack Overflow用户
提问于 2012-11-22 04:59:01
回答 1查看 81关注 0票数 0

有什么想法可以优化下面的SQL查询吗?它需要相当长的时间才能运行。通常在3-8秒左右,这取决于是哪种产品。

代码语言:javascript
复制
SELECT 
`serviceid` 

FROM 
`services` 

INNER JOIN `products` ON `serviceid`=products.`id` 

WHERE 
`orderid` IN 
(
    SELECT `orderid` FROM `orders_items`,`orders` 

    WHERE 
    `orderid`=orders.`id` AND
    `status` > '2' AND 
    `serviceid`='___SYSTEM_VARIABLE___'
) 

AND NOT 
`serviceid`='___SYSTEM_VARIABLE___' AND 
products.`state`='1' AND
products.`stock` > 0 

GROUP BY 
`serviceid` 

ORDER BY 
COUNT(`serviceid`) DESC LIMIT 15

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2012-11-22 07:18:10

删除in(select ...)并将其作为更多的连接滚动到主查询中。以下是我的猜测,因为我不知道您的表结构:

代码语言:javascript
复制
SELECT 
  `serviceid` 
FROM
  `services` 
  INNER JOIN `products` 
    ON `serviceid` = products.`id` 
  INNER JOIN `orders` 
    ON `products`.`orderid` = `orders`.`id` 
  INNER JOIN `orders_items` 
    ON `orderid` = `orders`.`id` 
WHERE services.`serviceid` = '___SYSTEM_VARIABLE___' 
  AND products.`state` = '1' 
  AND products.`stock` > 0 
  AND `orders`.`status` > '2' 
  AND `orders`.`serviceid` = '___SYSTEM_VARIABLE___' 
GROUP BY `serviceid` 
ORDER BY COUNT(`serviceid`) DESC 
LIMIT 15 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13501994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档