select * from xxxxx where Message REGEXP ? and AuthorDate >= ? and AuthorDate <= ?
现在语句是这样子。查询时间很长,请教。
建立索引,查询一下执行计划
最好不要select,查询最多的字段建立index索引,select而且不加索引是全表扫描是all级别的,也是最慢的
单表数据8000w?神仙来了也不好使啊。印象中REGEXP也不会走索引(待考证)。
我大概get到你想查什么,不做大改的话,可以这样考虑。
1.看看AuthorDate有没有做索引,有的话,把这个条件放前面去,看看会不会走索引。
2.如果你可以缩小查询范围,比如只查询几天的数据,评估一下数据量,如果不大(比如在几千的数量级),可以只基于AuthorDate把全部结果查出来,放内存里面,在进行模糊检索。
最终还是要做分库分表的。
可以去看看有关mysql性能优化的资料;解决方案挺多的