Dal momento che non è possibile utilizzare una colonna calcolata in una clausola where in MySQL come questo:Calcolato colonna nella clausola where - prestazioni
SELECT a,b,c,(a*b+c) AS d FROM table
WHERE d > n
ORDER by d
è necessario utilizzare
SELECT a,b,c,(a*b+c) AS d FROM table
WHERE (a*b+c) > n
ORDER by d
È il calcolo (nell'esempio "(a * b + c)" eseguito una volta per riga o due volte? Esiste un modo per renderlo più veloce? Trovo strano che sia possibile ORDINARE sulla colonna ma non avere una clausola WHERE.
è fantastico! È meglio/uguale/peggiore delle prestazioni rispetto alla ripetizione della formula in una clausola WHERE? La leggibilità è ovviamente migliore :) –
È possibile che mysql optimizer sia in grado di rilevare che le formule WHERE e SELECT sono le stesse e non calcolarlo due volte. Ma dato il track record di mysql, ne dubito. Benchmark e vedere. – Barmar
FYI: Sembra che questa soluzione funzioni solo per MySQL e SQL Server. –