这是一个创建于 3097 天前的主题,其中的信息可能已经有所发展或是发生改变。
我有一条简单的 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 你有试过简单粗暴地拆成两句查询么 = = |