简单的查询, cpu 占用高,瓶颈在哪里?

2017-06-13 17:11:12 +08:00
 wuxiaolin
我有一条简单的 sql,如下
SELECT *
FROM table_a w
LEFT JOIN table_b u ON w.u = u.u
WHERE w.u = 20 AND w.t in(3,4,5)
ORDER BY w.id DESC
LIMIT 0,10
对应的条件都有索引,查询也很快,0.08 秒
表数据也才 20w
但是在做压测时,每秒并发到 150 个失败率很高 50%+,查询服务器负载 cpu 占用很高
explain,索引都有命中,就是一个索引命中条数是 9w 条
这里具体的瓶颈是在哪里呢,有什么优化的方法?
3346 次点击
所在节点    MySQL
4 条回复
phttc
2017-06-13 17:43:26 +08:00
ORDER BY 的时候用不到那个索引,,只有连接表的时候才用到索引
wuxiaolin
2017-06-14 10:01:06 +08:00
@phttc 瓶颈是在 order by 吗? 但是必须排序这个需要怎么优化
bzzhou
2017-06-14 10:08:03 +08:00
如果表规模才 20W,80ms 算很慢了(当然也得看服务器配置)

初步判断 CPU 都消耗在 ORDER BY 排序这里了,可以把 order by 先去掉验证一下
msg7086
2017-06-14 11:17:54 +08:00
你有试过简单粗暴地拆成两句查询么 = =

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/368135

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX