我即将CREATE FUNCTION
用MySQL写一个,我想知道,如果CREATE TEMPORARY TABLE
对 flag 计数MODIFIES SQL DATA
。函数不会修改任何永久表,只是为了优化目的而创建的临时表。
我应该使用标志MODIFIES SQL DATA
还是只使用READS SQL DATA
?无论如何,使用或标记
的真正好处是什么?MODIFIES SQL DATA
READS SQL DATA
我即将CREATE FUNCTION
用MySQL写一个,我想知道,如果CREATE TEMPORARY TABLE
对 flag 计数MODIFIES SQL DATA
。函数不会修改任何永久表,只是为了优化目的而创建的临时表。
我应该使用标志MODIFIES SQL DATA
还是只使用READS SQL DATA
?无论如何,使用或标记
的真正好处是什么?MODIFIES SQL DATA
READS SQL DATA
截至目前(MySQL 5.5),这些特性仅用作代码内文档。
来自http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html
几个特征提供了有关例程使用的数据的性质的信息。在 MySQL 中,这些特性只是建议性的。服务器不使用它们来限制例程将被允许执行的语句类型。
这与(NON)DETERMINISTIC
子句形成对比,子句作为提示优化器是否可以缓存函数的结果。