• 如何优化Mysql执行查询数据的速度


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

  • 相关阅读:
    url_encode and url_decode in Shell
    学嵌入式技术,做高端电子工程师
    MCU助推居家移动医疗微型化
    深圳单片机培训,7月盛大开班,报名既送
    中国嵌入式工控机市场前景广阔
    嵌入式 现已发展为 IT行业的主流——高薪,且人才缺乏
    谷歌苹果已“技穷”?移动操作系统2013无创新
    C# 与 C++,语法差别有多小-其他2
    link
    C# 与 C++,语法差别有多小-第三章 C++数据类型 第一部分
  • 原文地址:https://www.cnblogs.com/luweiwei/p/5320804.html
Copyright © 2020-2023  润新知