当前位置: 首页 > 知识库问答 >
问题:

java - mysql sql语句优化的问题?

范文昌
2024-01-17

我有个商品表里面有30多万的数据,商品标题是中文,系统模糊查询的时候老是会显示慢,同时我在这个字段创建了一个普通索引;但是查询还是会慢?请教高手要如何进行优化?
select * from goods_name where title_name like "%电器%"

共有3个答案

徐秋月
2024-01-17

全文匹配这种,或者说关键词匹配,mysql 的性能 ,还是不如Elasticsearch 这种,可以用Es,match,查询性能比mysql高

芮立果
2024-01-17

如果经常使用这个查询,建议在表里添加一个字段表示商品种类,这样建立索引查询起来才会快

阎啸
2024-01-17

要优化MySQL中的模糊查询,可以考虑以下几个方面:

  1. 使用前缀索引:对于模糊查询,使用前缀索引可以显著提高查询性能。前缀索引只对字符串的前几个字符建立索引,这样可以在索引中匹配更多的查询条件,减少了需要扫描的数据量。你可以尝试创建一个前缀索引,例如:
ALTER TABLE goods_name ADD INDEX (title_name(10));

这将为title_name字段的前10个字符创建索引。

  1. 优化查询语句:尽量避免使用SELECT *,只选择你需要的字段。这样可以减少数据传输的量,提高查询速度。
  2. 考虑使用全文搜索引擎:如果你的查询需要匹配大量的文本内容,并且对匹配的准确度要求较高,可以考虑使用全文搜索引擎,如Elasticsearch。全文搜索引擎针对文本搜索进行了专门的优化,可以提供更快的查询速度。
  3. 考虑数据库分区:如果表中的数据量非常大,可以考虑使用数据库分区。将表分成多个分区可以提高查询性能和管理效率。
  4. 定期优化表:定期使用OPTIMIZE TABLE命令可以重新组织表的物理存储,提高查询性能。
  5. 调整MySQL配置:根据查询的需求和硬件配置,调整MySQL的配置参数,如缓冲区大小、连接数等,可以提高查询性能。

以上是一些常见的优化方法,你可以根据具体情况选择适合的方法进行优化。

 类似资料:
  • mysql数据库里面一个商品表;商品表有200多个字段,有2000万条数据,可是商品分页的时候,sql语句老是出现在慢查询日志里,请教高手如何优化? select * from d_shop order by id DESC limit 200, 220

  • 本文向大家介绍SQL Server中的SQL语句优化与效率问题,包括了SQL Server中的SQL语句优化与效率问题的使用技巧和注意事项,需要的朋友参考一下 很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解。比如: select * from table1 where name='zhangsan' and tID > 1000

  • 问题内容: 我有一个结构的SQLite表“ Details”: 我想随机选择一行,然后从三个不同的行中选择三个名称(同样最好随机选择)。我希望所有这些都可以从一个SQLite语句返回。例如 我的尝试可以从下面看到,但是有两个问题: 这三个额外的名称不一定总是不同的-我似乎无法排除先前选择的名称,因为变量b / c / d不在其自身的COALESCE函数范围内。 由于每个嵌套选择都使用Random(

  • 这是我的方法: 这是我的测试主测试: db对象工作,打开连接工作,我的find all records方法工作,然后我的deleteOneRecord崩溃。我收到以下错误: 线程“main”中的异常com.mysql.jdbc.exceptions.jdbc4. MySQLSyntaErrorException:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以在第1行的“作者”附

  • 本文向大家介绍Mysql查询语句优化技巧,包括了Mysql查询语句优化技巧的使用技巧和注意事项,需要的朋友参考一下 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存)等等。这里的记录的优化技巧更适用于开发人员,都是从网络上收集和自己整理的,主要是查询语句上面的优化,其它层面的优化技巧在此不做记录。 查询的开销指标: 执行时间 检查的行数 返回的行数

  • 问题内容: 我在学校被告知,修改a的index变量是一种不好的做法: 范例: 有论据认为, 某些编译器优化可以优化循环, 而无需重新计算索引并限制每个循环。 我进行了一些测试,似乎默认情况下每次都会重新计算索引和绑定。 我想知道是否有可能在中激活这种功能? 例如,优化这种循环: 无需写: 这只是一个例子,我很想尝试一下改进。 编辑 根据Peter Lawrey的回答, 为什么在这个简单的示例中JV