mysql在哪里写sql语句 mysql命令行输入代码教程

mysql通配符的用法有哪些

说白了,MySQL中的通配符是查找数据的“万能钥匙”,但如果使用不当,它们也可能成为“性能杀手”。

首先让我告诉你最重要的事情。
百分号 (%) 表示“大型搜索者”。
去年我在做一个电商项目的时候,用LIKE'order%2 02 3 %'查询订单号,直接扫描了3 000万条数据,CPU占用率高达9 0%。
很多人没有注意到这一点,因为 % 匹配任意长度的字符,而数据库根本无法使用索引。
另外需要注意的是,下划线(_)是“精确占位符”。
例如,如果您的用户名的第二个字符是 k,您可以使用 LIKE '_k_user' 直接锁定该特定位置。
去年的测试在几秒钟内生成了数百条数据的结果。
还有另一个重要的细节。
LIKE 'a%b' 允许数据库从左到右增量匹配,但 LIKE '%ab' 需要全表扫描。
这种现象的技术术语是雪崩效应。
事实上,前部的一个小延迟就会导致整个后部的下降。

一开始我以为可以任意使用通配符,后来发现我错了。
在 WHERE 条件中混合使用 AND 列 LIKE '%a%' 和 AND 列 = 'exact' 会使性能降低 8 0%。
等等,还有一件事。
MySQL 8 .0 开始支持 LIKE '%a%' ESCAPE '!'有转义字符可以避免特殊字符的随机匹配,但使用的人并不多。

我建议不要将 % 添加到第一个 WHERE 条件,或者尝试 LIKE CONCAT('%', column, '%') 连接方法,这至少可以稍微优化扫描范围。