问题
mysql在where后接自定义函数查询时查询时间暴增,秒级查询变分钟
导致问题代码
SELECT * from temp where name=(select prc_jtof("张三"));
分析原因
prc_jtof是自定义繁简体转换函数,类似于接了一个复杂子查询,致使全表扫描每一条记录都走一遍子查询 (?为什么不是把子查询结果缓存下来匹配)
解决办法
把子查询结果拿出来做匹配
SELECT * from temp temp join (select prc_jtof("张三") as pfname) pf where temp.name=pf.pfname;