在项目中数据量小的情况下使用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

如何优化Mysql执行查询数据的速度的更多相关文章

  1. (转载)提高mysql插入数据的速度

    (转载)http://blog.csdn.net/bhq2010/article/details/7376352 需要在mysql中插入2000万条记录,用insert语句插入速度很有限,每秒钟几百条 ...

  2. MySQL大数据分页的优化思路和索引延迟关联

    之前上次在部门的分享会上,听了关于MySQL大数据的分页,即怎样使用limit offset,N来进行大数据的分页,现在做一个记录: 首先我们知道,limit offset,N的时候,MySQL的查询 ...

  3. MySQL 大数据量快速插入方法和语句优化

    MySQL大数据量快速插入方法和语句优化是本文我们主要要介绍的内容,接下来我们就来一一介绍,希望能够让您有所收获! INSERT语句的速度 插入一个记录需要的时间由下列因素组成,其中的数字表示大约比例 ...

  4. 【1】MySQL大数据量分页查询方法及其优化

    ---方法1: 直接使用数据库提供的SQL语句---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N---适应场景: 适用于数据量较少的情况(元组百/千 ...

  5. MySQL大数据量分页查询方法及其优化

    MySQL大数据量分页查询方法及其优化   ---方法1: 直接使用数据库提供的SQL语句---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N---适 ...

  6. MySQL大数据量分页性能优化

    mysql大数据量使用limit分页,随着页码的增大,查询效率越低下. 测试实验 1.   直接用limit start, count分页语句, 也是我程序中用的方法: select * from p ...

  7. mysql 大数据分页优化

    一.mysql大数据量使用limit分页,随着页码的增大,查询效率越低下. 1.   直接用limit start, count分页语句, 也是我程序中用的方法: select * from prod ...

  8. MySQL 10w+数据 insert 优化

      由于业务原因,遇到了如题所述的业务问题,事务执行时间在30s~50s 不等,效果非常不理想 方案1. jdbc批处理 5w+ 数据测试,分别使用了mybatis insert()()(拼接xml) ...

  9. java+Mysql大数据的一些优化技巧

    众所周知,java在处理数据量比较大的时候,加载到内存必然会导致内存溢出,而在一些数据处理中我们不得不去处理海量数据,在做数据处理中,我们常见的手段是分解,压缩,并行,临时文件等方法; 例如,我们要将 ...

随机推荐

  1. 集训Day6

    今天的图论题略多 但好像都是noip题 bzoj3624 有一个图,边是黑色或者白色,求一个生成树满足恰好有k条白边 贪心 我们把最小生成树上的白边叫做“富家子弟”,把不在树上的叫“贫下中农” 很明显 ...

  2. Python实现排序算法之快速排序

    Python实现排序算法:快速排序.冒泡排序.插入排序.选择排序.堆排序.归并排序和希尔排序 Python实现快速排序 原理 首先选取任意一个数据(通常选取数组的第一个数)作为关键数据,然后将所有比它 ...

  3. 动态库*.so制作

    转自:http://www.2cto.com/os/201308/238936.html 在linux下制作动态库*.so.   1.linux下动态库的制作 //so_test.h #include ...

  4. node.js setup wizard ended prematurely Win7安装nodejs失败解决方法

    笔记本win7在nodejs官方网站下载.msi文件安装,安装到一半的时候,进度条提示:roll back,because of a error.node.JS setup wizard ended ...

  5. libvirtError: 无效参数:could not find capabilities for domaintype=kvm

    libvirtError: 无效参数:could not find capabilities for domaintype=kvm 编辑/etc/nova/nova.conf 在[libvirt] 添 ...

  6. H+ Se7en WebUI

    http://www.zi-han.net/theme/hplus/webim.html

  7. 【转】eclipse修改workspace

    [转]eclipse修改workspace 以下方法选其中一种 1.进入 Window > Preferences > General > Startup and Shutdown ...

  8. ACM-ICPC2018北京网络赛 Saving Tang Monk II(bfs+优先队列)

    题目1 : Saving Tang Monk II 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 <Journey to the West>(also < ...

  9. .net 扩展方法,lamada表达式 委托

    扩展方法 (1)扩展方法是一种特殊的静态方法,它定义在一个静态类中,但可以在其他类的对象上向调用实例方法那样进行调用.因此,通过扩展方法,我们就可以在不修改一个类型的前提下对一个类型进行功能上的扩充, ...

  10. unity打包iOS上线归纳

    1.去https://developer.apple.com登陆账号去生成打包用的签名文件,生成一个测试用的和一个上线发布用的签名文件 注意:签名文件绑定id必须和应用绑定包命一致,iOSapp唯一性 ...