2

我即将CREATE FUNCTIONMySQL写一个,我想知道,如果CREATE TEMPORARY TABLE对 flag 计数MODIFIES SQL DATA。函数不会修改任何永久表,只是为了优化目的而创建的临时表。

我应该使用标志MODIFIES SQL DATA还是只使用READS SQL DATA?无论如何,使用或标记
的真正好处是什么?MODIFIES SQL DATAREADS SQL DATA

4

1 回答 1

5

截至目前(MySQL 5.5),这些特性仅用作代码内文档。

来自http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html

几个特征提供了有关例程使用的数据的性质的信息。在 MySQL 中,这些特性只是建议性的。服务器不使用它们来限制例程将被允许执行的语句类型。

这与(NON)DETERMINISTIC子句形成对比,子句作为提示优化器是否可以缓存函数的结果。

于 2012-02-25T18:52:50.793 回答