SELECT f.id AS firmId, f.name AS firmName,COUNT(1) AS num,up.phoneNum FROM ty_order o LEFT JOIN ty_firm f ON f.id = o.firmId LEFT JOIN user up ON up.firmId = o.id AND up.type = '档主' AND up.effectivStatus = '启用' WHERE o.status IN ('赊欠','已结清') AND ( f.name LIKE '%2%' OR f.id LIKE '%2%' OR up.phoneNum LIKE '%2%' ) GROUP BY f.id ORDER BY COUNT(1) DESC 中的like查询查询变慢
时间: 2024-04-03 13:33:50 浏览: 46
得力M201CRx固件V07.96.zip
对于 LIKE 查询,如果在查询条件中使用了通配符 %,那么 MySQL 就无法使用索引进行优化,因为它无法确定哪些行匹配查询条件。因此,可以考虑以下几种优化方式:
1. 尽量避免在查询条件中使用通配符 %,可以考虑使用全文索引或者其他方式进行优化。
2. 对于类似于 '%2%' 这样的查询条件,可以使用字符集合索引来进行优化。例如,创建一个字符集合索引,包含所有可能出现的字符,然后在查询条件中使用 IN 运算符,将查询条件拆分成多个等值查询,这样就可以使用索引进行优化了。
3. 将 LIKE 查询改为全文索引查询,使用 MySQL 自带的全文索引功能进行优化。
4. 对于一些经常出现的查询条件,可以将这些条件提前进行处理,例如将查询条件中的 '%2%' 替换为一个固定的字符串,然后使用这个固定的字符串进行查询。
5. 优化查询语句本身,例如使用 EXPLAIN 命令查看查询计划,查找可能存在的性能瓶颈,进行适当的索引优化等。
阅读全文