Vì bạn không thể sử dụng một cột tính toán trong một mệnh đề where trong MySQL như thế này:Tính cột trong mệnh đề where - hiệu suất
SELECT a,b,c,(a*b+c) AS d FROM table
WHERE d > n
ORDER by d
bạn phải sử dụng
SELECT a,b,c,(a*b+c) AS d FROM table
WHERE (a*b+c) > n
ORDER by d
Là tính toán (trong ví dụ đó "(a * b + c)" thực hiện một lần mỗi hàng hoặc hai lần? Có cách nào để làm cho nó nhanh hơn? Tôi tìm thấy nó lạ nó có thể đặt hàng trên cột nhưng không có một mệnh đề WHERE.
đó là lời cảm ơn tuyệt vời! Nó có hiệu suất tốt hơn/bằng/tệ hơn lặp lại công thức trong mệnh đề WHERE không? Khả năng đọc là tốt hơn tất nhiên :) –
Có thể là trình tối ưu hóa mysql có thể phát hiện ra rằng các công thức WHERE và SELECT giống nhau, và không tính toán nó hai lần. Nhưng với hồ sơ theo dõi của mysql, tôi nghi ngờ nó. Điểm chuẩn nó và xem. – Barmar
FYI: Dường như giải pháp này chỉ hoạt động đối với MySQL và SQL Server. –