あなたは、このようなMySQLでのWHERE句で計算された列に使用することはできませんので:計算列 - パフォーマンス
SELECT a,b,c,(a*b+c) AS d FROM table
WHERE d > n
ORDER by d
をあなたは
SELECT a,b,c,(a*b+c) AS d FROM table
WHERE (a*b+c) > n
ORDER by d
を使用する必要がありますが、です計算(この例では "a * b + c"は1行または2回実行されます)?高速化の方法はありますか?列のORDERは可能ですがWHERE句は使用できません。
大変ありがとうございます。それはWHERE句で数式を繰り返すよりもパフォーマンスが良い/等しい/悪いですか?可読性はもちろん良いです:) –
mysqlオプティマイザは、WHEREとSELECTの式が同じであることを検出し、2回計算しない可能性があります。しかし、mysqlの実績を考えると、私はそれを疑う。ベンチマークして見てください。 – Barmar
FYI:このソリューションは、MySQLおよびSQL Serverでのみ動作するようです。 –