mysql数据库,表数据量400万以上,求解模糊查询很慢的问题

mysql数据库,表数据量400万以上,需要模糊查询名称字段,怎样解决查询慢的问题(模糊查询索引是无效的)

覆盖索引。

比如表里有id,name,content字段,要模糊查name,给name建立字段后,只查name,id字段

select id,name from 表 where name like '%123%';

这样会走索引。

explain select name from users where name like '%3%';

执行结果

追问

多出id、name还走吗。如果除了,name like '',还有 and stime>?,还有type=?

追答

多出字段后将不会走索引,select id,name,title这样的不会走

追加得条件不在索引内也不会走索引

可以考虑联合索引

温馨提示:内容为网友见解,仅供参考
无其他回答

mysql数据库,表数据量400万以上,求解模糊查询很慢的问题
覆盖索引。比如表里有id,name,content字段,要模糊查name,给name建立字段后,只查name,id字段 select id,name from 表 where name like '%123%';这样会走索引。explain select name from users where name like '%3%';执行结果

mysql 大数据表 模糊查询 如何提示查询效率
22、临时表并不是不可使用,适当地使用它们可以使某些例程更有效,例如,当需要重复引用大型表或常用表中的某个数据集时。但是,对于一次性事件,最好使 用导出表。23、在新建临时表时,如果一次性插入数据量很大,那么可以使用 select into 代替 create table,避免造成大量 log ,以提高速度;如果数据...

MySQL高效实现模糊查询--28条优化建议
25. 避免使用游标,尤其是当数据量超过1万行时。26. 尝试基于集的方法解决使用游标的查询问题,以提高性能。27. 对于小型数据集,FAST_FORWARD游标可以提供比逐行处理方法更好的效率。28. 设置NOCOUNT参数以减少客户端消息的发送。29. 避免返回大量数据给客户端,优化大数据查询。30. 减少大事务操作,提...

分析为什么mysql中like模糊查询效率低
所以,照成mysql中like查询效率低下的原因是:在有些情况下,like查询使用不到索引,会扫描全表。最后,补充一下,like语句有时候也是可以用到索引的,如下图,如果我们查询的时候写成“like 'dd_'或者like 'dd%'”,这样是可以用到索引的,此时的查询速度也会相对的快一点。虽然快了一点,但是还是...

like模糊匹配查询慢解决之道——MySQL全文索
选择三种查询方式:使用LOCATE、使用instr、使用like。分析explain执行计划,发现索引失效。原因:MySQL B+树索引结构在模糊查询时会失效,尤其在使用LIKE的通配符%时。时间分析:查询耗时90ms,随着数据量增加,耗时会持续增长。解决方案:针对小量数据,采用MySQL全文索引;针对大量数据或者全文索引性能不理想,...

MySQL中的模糊查询不完全匹配的使用方法详解mysql不完全匹配
1. 模糊查询语句通常比正则查询语句要慢,因此在大量数据查询或关键字复杂的情况下,建议使用正则表达式实现匹配。2. 当使用通配符查询时,如果被查询的列没有建立索引,将会造成全表扫描,严重影响查询效率,因此建议在对列建立索引后,再进行模糊查询。以上就是MySQL中模糊查询的常用方法及注意事项,希望...

mysql 千万级数据 优化查询速度
你的这条sql有索引也是等于没有的,因为你用了like '%xxx%' 如果like 的条件以%开始,数据库不会用索引。分表是可以,但是需要分很多。你要一个表分几十个表才能优化到合理的速度。但是从你表的数据量来说,你应该不需要用得全表扫面,应该是根据用户来查找。所以建议你加多一个userid =?

如何用mysql模糊查询?
1. 模糊查询可能会返回大量结果,特别是在大型数据库中,因此需要谨慎使用。2. 为了提高查询性能,可以考虑使用全文搜索引擎或相关索引技术。3. 在处理敏感数据时,模糊查询可能不是最佳选择,因为它可能会暴露过多的信息。确保只在适当的情况下使用模糊查询。总的来说,MySQL的模糊查询功能通过LIKE关键字...

MySQL的下划线模糊查询原理和方法详解mysql下划线模糊查询
下划线模糊查询通常用于以下场合:1.查询所有满足特定条件的数据,但是数据的某些部分内容不确定;2.查询数据的时候可能出现某些特定符号被转义的问题,此时可以使用下划线模糊查询来解决。例如,如果需要查询姓名中包含“张三”的学生,可以使用下列SQL语句:SELECT * FROM student WHERE name LIKE ‘%...

mysql在大文本里(longtext),模糊查询出一个单词,用like好像太慢了,有...
没什么好办法 50W条还是模糊查询出来的 那你这总记录得有多少条?MYSQL有人认为比MSSQL快一些,但到了这么大量的数据,好像都不可能瞬间出来的吧 你把关键词再精确一些,可能会好一点

相似回答