这是一个创建于 2681 天前的主题,其中的信息可能已经有所发展或是发生改变。
我有一条简单的 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 条
这里具体的瓶颈是在哪里呢,有什么优化的方法?
4 条回复 • 2017-06-14 11:17:54 +08:00
|
|
1
phttc 2017-06-13 17:43:26 +08:00
ORDER BY 的时候用不到那个索引,,只有连接表的时候才用到索引
|
|
|
2
wuxiaolin 2017-06-14 10:01:06 +08:00
@ phttc 瓶颈是在 order by 吗? 但是必须排序这个需要怎么优化
|
|
|
3
bzzhou 2017-06-14 10:08:03 +08:00
如果表规模才 20W,80ms 算很慢了(当然也得看服务器配置)
初步判断 CPU 都消耗在 ORDER BY 排序这里了,可以把 order by 先去掉验证一下
|
|
|
4
msg7086 2017-06-14 11:17:54 +08:00
你有试过简单粗暴地拆成两句查询么 = =
|