如何优化查询数据的速度
来源:互联网 发布:2017年留守儿童数据 编辑:程序博客网 时间:2024/05/21 05:20
在项目中数据量小的情况下使用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;
方案三:
使用搜索引擎ElasticSearch
http://blog.csdn.net/lu_wei_wei/article/details/50920435
总结:
使用方案一需要修改现有的数据库表结构,有一定的风险性;
使用方案二不影响数据库表结果,修改查询方法即可,但是首次查询关键字的时候会比较慢,再次查询的时候查询速度会很快;使用这样方式可以将信息发布的时候直接放在redis里面,查询时直接查询redis;
使用方案三在搜索速度上比前两种方式好,而且方案三支持高亮显示、分词等,本人正在研究ElasticSearch。
问题:
使用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;
方案三:
使用搜索引擎ElasticSearch
http://blog.csdn.net/lu_wei_wei/article/details/50920435
总结:
使用方案一需要修改现有的数据库表结构,有一定的风险性;
使用方案二不影响数据库表结果,修改查询方法即可,但是首次查询关键字的时候会比较慢,再次查询的时候查询速度会很快;使用这样方式可以将信息发布的时候直接放在redis里面,查询时直接查询redis;
使用方案三在搜索速度上比前两种方式好,而且方案三支持高亮显示、分词等,本人正在研究ElasticSearch。
0 0
- 如何优化查询数据的速度
- 如何优化Mysql执行查询数据的速度
- 如何优化sqlite的查询速度
- MySQL如何优化查询速度
- 提高百万条数据的查询速度-mysql优化
- 针对MySQL提高百万条数据的查询速度优化
- C#中优化数据查询速度
- SQLite查询优化,提高获取数据速度
- 如何优化数据库中数据的查询
- 如何优化数据库中数据的查询
- 如何优化数据库中数据的查询
- 数据库的索引大幅度优化查询速度
- 优化查询速度的几点经验
- MySQL查询的性能优化 - 查询缓冲提高查询速度
- mysql处理海量数据时的一些优化查询速度方法
- mysql处理海量数据时的一些优化查询速度方法
- mysql处理海量数据时的一些优化查询速度方法
- mysql处理海量数据时的一些优化查询速度方法
- CoreData简单使用
- 用Ant实现Java项目的自动构建和部署
- unity发射弓箭轨迹的实现
- Java容器与Hash算法的研究
- 微信网页录音与NativeApp网页录音
- 如何优化查询数据的速度
- Android如何安全退出多个Activity
- 什么是CSS包含块(Containing Block)
- Oracle 备份杂谈
- C#OOP之十 异常机制及其处理
- iosGCD用法
- UILabel UIButton 混合问题 -iOS初学
- 对于<welcome-file-list>设置主页后无法引用CSS的问题
- 用Hibernate框架把hql生成可执行的sql语句-Oracle方言