在项目中数据量小的情况下使用like查询速度还行,但是随着数据一天一天增加,再使用like进行模糊查询的时候速度上就会显得比较慢,现提供两套解决方案:

问题:

使用like查询效率很慢

select inner_id,title from news_info where title like ‘%齐鲁壹点%’;

方案一:

使用mysql数据库全文检索的功能;

1.首先我的表默认是:innoDB,这种表的类型不支持全文检索,所以要先改变其类型为MyISAM。

alter news_info title engine=MyISAM;

2.然后要在对应的要进行查找的字段上面建立全文检索的索引:

alter news_info add fulltext index(title);

如果要同时对多个字段进行检索可以这样:

alter news_info add fulltext index(title,source);

这样就可以去检索字段:

select inner_id,title from news_info where match(title) against(‘齐鲁壹点’) ;

或者多字段:

select inner_id,title from news_info where match(title,source) against(‘齐鲁壹点’);

问题来了,没有结果,经过查询得知MySQL全文检索默认不支持中文,且对英文检索时忽略大小写

需要修改表结构增加拼音字段,将索引字段中文转化成拼音,java方法比较好实现;

方案二:

使用缓存技术(redis);

1.将查询出来的结果放在redis缓存中;

2.查询时判断redis中是否有对应的数据,有的话直接返回,没有的话将数据执行1;

总结:

使用方案一需要修改现有的数据库表结构,有一定的风险性;

使用方案二不影响数据库表结果,修改查询方法即可,但是首次查询关键字的时候会比较慢,再次查询的时候查询速度会很快;使用这样方式可以将信息发布的时候直接放在redis里面,查询时直接查询redis

最新文章

  1. linux通过挂载系统光盘搭建本地yum仓库的方法
  2. Daily Scrum02 12.17
  3. 变量在SSIS包中的使用
  4. IOS开发之开篇--CocoaPods安装
  5. 由多次使用Statement实例引起的Result set already closed异常的解决方案
  6. VB6-图像分割利器 Microsoft Picture Clip控件
  7. HDU 5876 Sparse Graph 【补图最短路 BFS】(2016 ACM/ICPC Asia Regional Dalian Online)
  8. getResource(String name)用法及源码分析
  9. 如何使用autolayout的UIView加入动画
  10. JDK自带的缓存--包装类的缓存
  11. UNIX环境高级编程——管道和FIFO限制
  12. 在原有数据库中使用 CodeFirst
  13. python语法与c++不同点
  14. php(三)使用thinkphp操作数据库
  15. Ubuntu16.04安装后开发环境配置和常用软件安装
  16. Mac上反编译Android apk安装包
  17. Linux后台运行进程
  18. PG的集群技术:Pgpool-II与Postgres-XC Postgres-XL Postgres-XZ Postges-x2
  19. ios实例开发精品文章推荐(8.12)11个处理触摸事件和多点触摸的JS库
  20. InlineModelAdmin对象的学习

热门文章

  1. suse enterprise Linux 11上配置 oracle11g和tomcat开机自启动
  2. spring-data详解之spring-data-jpa:简单三步快速上手spring-data-jpa开发
  3. setsockopt函数功能及参数详解
  4. poj 1269 Intersecting Lines——叉积求直线交点坐标
  5. C# 获取Console的输入和输出 数据 (异步)
  6. 蓝桥杯Log大侠(线段树单点区间更新)
  7. Maven项目实战(1)
  8. Java面试知识点总结(1)
  9. elasticsearch2.x安装部署
  10. Auto Layout Guide----(一)-----Understanding Auto Layout