200万的数据量,需要根据名称进行模糊查,因为一直用like,前后都加%后走不了索引,查一次时间要4s多,服务器只有一个mysql和java服务,有什么方式可以优化到秒出,不加es,也不用mysql的全文检索
使用 instr函数试试看 ,查询 like '%121%'
select * from test t where instr(t.requestdata,'121')> 0;
如果您不想使用 Elasticsearch 或 MySQL 的全文检索功能,可以考虑使用其他优化技巧来提高查询性能。例如:
这些优化技巧可能并不能使查询完全秒出,但是可以显著提高查询性能。
你可以使用instr(str,substr)代替like
感觉你已经禁用掉所有能优化的手段了,又不能做成精准匹配或者左like。
我能想到的就只有加缓存了,这样一些常用的值可以很快的返回,减轻数据库压力