大量mysql数据查询,优化到秒出

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。
我能想到的就只有加缓存了,这样一些常用的值可以很快的返回,减轻数据库压力