问题描述
MySQL数据库
已建索引了 SQL语句不复杂 就二,三个条件
单纯就是某个条件的in参数太多 查出来的结果集数据量太大导致的
SQL执行就是这么慢 业务上是这么个需求
但是上面指标要求太变态 要求所有SQL控制在200ms以内
现在很难解决 有什么办法吗?
换TiDB之类的方案就算了 上面不可能同意
相关代码
in 查询参数太多 一般超过5000个
select * from table t where t.id in (...)
已通过执行计划确认命中索引
无连表查询 需多表数据时都是单标查询后内存里拼接的
你期待的结果是什么?实际看到的错误信息又是什么?
希望能控制在200ms以内 现在经常有超过200ms
老实说几个开发都觉得查数据1s内都没啥 但是上面就是这么个要求
根据你评论和修改后的问题更新的内容:
没有实际 SQL 和表的情况,所以只能泛泛而谈
explain 看过执行计划了吗?确定真的命中了索引吗?(包括所有的子查询?)
如果有连表跨表,把连表拆出来,在你的代码层面进行数据的重新组装
如果有非常大的 limit ,review 一下是不是产品层面真的有这么大的数据量要展现,查询语句是否真的设计合理
一些你要现查的数据有存在写入时冗余存储的可行性吗?(例如某个关联表的关联数量类的数据)
PS: 200ms 并不是什么变态的要求,其实还是很正常的