MySQL分析不适用于嵌套函数

时间:2013-01-03 23:49:28

标签: 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    members mem
        WHERE   is_test_account(mem.email) = false # THIS CAUSES PROBLEMS!
     ) subquery
ON mer.id = subquery.merchant_id
GROUP BY mer.id;

当我在嵌套查询中使用任何自定义函数时会出现问题,如上面is_test_account所示。执行显示的查询会阻止它显示在配置文件列表SHOW PROFILES;中 从内部查询的WHERE条件中删除该函数可以解决问题!

作为参考,函数is_test_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分析工作?

非常感谢解决问题的任何见解。谢谢。

0 个答案:

没有答案