Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL có loại bỏ các biểu thức con phổ biến giữa mệnh đề SELECT và HAVING / GROUP BY không

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySql lấy danh sách các từ duy nhất từ ​​bảng trong đó các giá trị trong một trường được phân tách bằng dấu phẩy

  2. Cần trợ giúp tối ưu hóa tìm kiếm địa lý vĩ độ / kinh độ cho mysql

  3. lựa chọn nhanh một hàng ngẫu nhiên từ một bảng lớn trong mysql

  4. SELECT trả về danh sách các giá trị không xuất hiện trong bất kỳ hàng nào

  5. Hệ thống nhắn tin riêng. Liệt kê tin nhắn cuối cùng của mỗi cuộc trò chuyện