mysql 百万级数据的模糊查询 优化 笔记

最近老大给了一个需求,是要写一个姓名的模糊查询。

问题很简单,难度在于这张表有将近500W条数据。

如果要做中文的模糊查询,效率简直惨不忍睹。

网上查了一下资料,发现全文索引挺符合我的需要的。

结果,使用下来。其实并不太符合我的要求。

全文索引的最小单位是词,如果不是在 in boolean mode 下是没办法 查询的

其次,全文索引只支持 半模糊查询,我所谓的半模糊就是  xx like ‘xx%‘

如果使用全模糊查询,建完索引之后,用 like 或者用 regexp 在常用关键词的时候 确实快很多。

可以控制在0.1左右

不过低频词还是很慢 需要10S

所以,基于这种情况,可能还是做分表比较好

或者修改需求 做半模糊查询。

下面是参考的资料

MySQL中的全文检索(1)

MySQL使用全文索引(fulltext index)

时间: 2024-08-03 10:53:23

mysql 百万级数据的模糊查询 优化 笔记的相关文章

MySQL单表多字段模糊查询解决方法

在最近的一个项目需要实现在单表中对多字段进行多个关键字的模糊查询,但这数个关键字并不一定都存在于某个字段 例如现有table表,其中有title,tag,description三个字段,分别记录一条资料的标题,标签和介绍.然后根据用户输入的查询请求,将输入的字串通过空格分割为多个关键字,再在这三个字段中查询包含这些关键字的记录. 可目前遇到的问题是,这些关键字是可能存在于三个字段中的任意一个或者多个,但又要求三个字段必须包含所有的关键词.如果分别对每个字段进行模糊匹配,是没法实现所需的要求,由此

关于mysql百万级数据的插入和删除

这几天有个朋友让我帮他优化mysql百万级操作db的事.于是我就答应了--.优化完个人做个笔记.给大家一个参考--如果有更好的方法,或建议可以联系[email protected] 程序员不想做解释直接上代码: public boolean test(String filePath) throws Exception{ String sql = "LOAD DATA INFILE '"+filePath+"' REPLACE INTO TABLE t_table FIELDS

Oracle 模糊查询 优化

模糊查询是数据库查询中经常用到的,一般常用的格式如下: (1)字段  like '%关键字%'   字段包含"关键字“的记录   即使在目标字段建立索引也不会走索引,速度最慢 (2)字段  like '关键字%'      字段以"关键字"开始的记录   可以使用到在目标字段建立的升序索引 (3)字段 like '%关键字'      字段以"关键字“结束的记录    可以使用到目标字段建立的降序索引 对于无法使用索引的 '%关键字%' 模式,有没有办法优化呢,答案

JSP+Servlet+javabean+mysql实现页面多条件模糊查询(转载)

需求: 一般列表页上面会有一个查询框,有各种的查询条件组合,一般都采用模糊查询方式 ,以下以自己做的实例来说明一下实现方法: 需要实现的界面原型:要满足条件: 1.单选分类,点GO按扭 2.单独输入标题关键字,点GO按扭 3.选择分类,再输入关键字,点GO按扭 我这里用了MVC分层模式来进行的,所以一步步讲解吧,上源码: 因为我一个class里写了很多不同的业务,所以帖代码只帖当前步 dao层: 1 //当前页显示的新闻信息pageNo 当前页码,pagePerCount是每页多少条数据 2 p

MySQL 百万级、千万级 分页优化

查询字段一较长字符串的时候,表设计时要为该字段多加一个字段,如,存储网址的字段 查询的时候,不要直接查询字符串,效率低下,应该查诡该字串的crc32或md5 如何优化Mysql千万级快速分页 Limit 1,111 数据大了确实有些性能上的问题,而通过各种方法给用上where id >= XX,这样用上索引的id号可能速度上快点儿.By:jack Mysql limit分页慢的解决办法(Mysql limit 优化,百万至千万条记录实现快速分页) MySql 性能到底能有多高?用了php半年多,

JSP+Servlet+javabean+oracle实现页面多条件模糊查询

之前写过一篇JSP+Servlet+javabean+mysql实现页面多条件模糊查询 使用的是mysql进行的分页查询,mysql用limit控制,而oracle则是用rownum,今天第一次写oracle,查了一下资料试了一下,把代码帖出来 oracle的数据源配置也不同: driverName=oracle.jdbc.driver.OracleDriver url=jdbc\:oracle\:thin\:@127.0.0.1\:1521\:orcl username=marketManag

百万级数据记录量优化查询以及导出EXCEL文件编程

通过对完整软件实例(工程设计流水管理系统)编程讲解,让学员熟悉完整软件布局架构及开发思路.比如从界面布局.登录验证.软件注册程序.到软件发布等知识点,贯穿知识点间联系,提升编程整合能力. 中文编程完整软件实例编程解析之工程设计流水管理系统(8课时) 第1课:整体布局.EXCEL表数据导入到软件数据库编程a.整体布局b.EXCEL表数据导入到软件数据库编程第2课:基本信息预先设置编程a.项目名称预设置 第3课:子项目工程日志流水编程解析a.工程日志流水编程 第4课:子项目设计费发放流水编程解析a.

mysql模糊查询的优化方法--亲自实践

数据有4W多条,不多,但是模糊查询 起来特别慢. 1,尝试过用 select * from (select * from a union all select * from b...很多表union) as tempTable where name like "%a%" and person_id like "%1%",发现太慢了.. 2,尝试使用具体的字段,而不是*,即 select id,name,person_id from (select id,name,p

百万级数据插入的优化

插入分析 MySQL中插入一个记录需要的时间由下列因素组成,其中的数字表示大约比例: 连接:(3) 发送查询给服务器:(2) 分析查询:(2) 插入记录:(1x记录大小) 插入索引:(1x索引) 关闭:(1) 如果我们每插入一条都执行一个SQL语句,那么我们需要执行除了连接和关闭之外的所有步骤N次,这样是非常耗时的,优化的方式有一下几种: 在每个insert语句中写入多行,批量插入 将所有查询语句写入事务中 利用Load Data导入数据 每种方式执行的性能如下. Innodb引擎 InnoDB