MySQL评测不适用于嵌套函数
我尝试在MySQL中分析一些查询,版本:MySQL评测不适用于嵌套函数,mysql,performance,profiling,Mysql,Performance,Profiling,我尝试在MySQL中分析一些查询,版本: mysql Ver 14.14 Distrib 5.5.28, for debian-linux-gnu (x86_64) using readline 6.2 从标准方法开始 SET profiling = 1; …和一个示例查询: SELECT mer.name FROM merchants mer JOIN ( SELECT mem.id, mem.merchant_id FROM member
mysql Ver 14.14 Distrib 5.5.28, for debian-linux-gnu (x86_64) using readline 6.2
从标准方法开始
SET profiling = 1;
…和一个示例查询:
SELECT mer.name
FROM merchants mer
JOIN (
SELECT mem.id, mem.merchant_id
FROM members mem
WHERE is_test_account(mem.email) = false # THIS CAUSES PROBLEMS!
) subquery
ON mer.id = subquery.merchant_id
GROUP BY mer.id;
当我在嵌套查询中使用任何自定义函数时,就会出现问题,如上面用is\u test\u account
所示。按显示方式执行查询可防止其出现在配置文件列表中,SHOW profiles代码>
从内部查询的WHERE
条件中删除该函数修复了问题
作为参考,函数是\u test\u account
如下所示:
DELIMITER //
CREATE FUNCTION is_test_account(p_email_addr VARCHAR(255))
RETURNS BOOLEAN
DETERMINISTIC
BEGIN
RETURN (p_email_addr like '%demo.com'
OR p_email_addr like '%example.com'
);
END//
为什么在嵌套查询中使用该函数会阻止MySQL评测工作
任何解决问题的见解都将不胜感激。谢谢。像“%”
不使用索引。我的问题与索引无关。分析的目标是查看查询在哪里花费了大部分时间。