Tôi nghĩ rằng điều này có thể được kiểm tra bằng cách sử dụng hàm sleep (), ví dụ:hãy xem bản trình diễn này:http://sqlfiddle.com/#!2/0bc1b/1
Select * FROM t;
| X |
|---|
| 1 |
| 2 |
| 2 |
SELECT x+sleep(1)
FROM t
GROUP BY x+sleep(1);
SELECT x+sleep(1) As name
FROM t
GROUP BY name;
Thời gian thực thi của cả hai truy vấn là khoảng 3000 mili giây (3 giây).
Có 3 bản ghi trong bảng và đối với mỗi bản ghi, truy vấn chỉ ngủ trong 1 giây,
vì vậy, điều đó có nghĩa là biểu thức được đánh giá chỉ một lần cho mỗi bản ghi, không phải hai lần.