READS SQL DATA means the routine contains statements that read data (for example, SELECT), but not statements that write data.
I understand what it means, but what is the advantage to the user? Does the function execute faster if declared?
I also use "DETERMINISTIC" with "READS SQL DATA" as "DETERMINISTIC" is for caching purposes. I can only assume that after the function is called, if you declare "READS SQL DATA" it does not update the buffer pool regarding the results of the function if called again.