Mysql 5.6 下如何对text类型字段的LIKE操作做优化

数据库版本 Mysql5.6.21

表体量100万+

目前有一个text类型字段,用like操作查询比较多。导致查询速度过慢。

开始的设想是给该字段加一个fulltext索引,加了之后对英文的查询速度的确变快了。不过由于分词的原因,对中文的支持不好。百度后发现要使用一个ngram插件来支持中文。但是5.6不支持该插件。

想问下,在不升级数据库的前提下,还有其他的优化方案吗?

阅读 6.7k
3 个回答

这种情况下建议增加一个单独的缓存数据库(如Redis)
将部分热搜缓存至Redis内
PHP代码可参考下面

if ($redis->get($key) != '') {
        //echo "缓存存在";
        $json=json_decode($redis->get($key));
        echo json_encode($json);
    } else {
    //echo "缓存不存在";
    //从数据库读取结果并缓存至redis
    $redis->set($key, json_encode($all_response), 60);
    }

php的话可以用scws先分词。然后把分完的词存到新字段。查数据的时候从这个字段找。

数据上百万了,模糊查询你哪怕做了全文索引,都很慢的,建议直接上搜索,轻量的可用sphinx,资源足够上es或solr,轻松解决楼主的问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题