MySQL alias w klauzuli WHERE / HAVING (wydajność)

0

Potrzebuję w warunku WHERE mojego zapytania sprawdzić czy cena produktu (lub cena promocyjna produktu) mieści się w danych widełkach.
Obie ceny są w osobnych tabelach i zapytanie ma taką postać:
SELECT p.price, (SELECT .. FROM) as special FROM product p LEFT JOIN .... WHERE (price >= 0 AND price <= 600) OR (special >= 0 AND special <= 600);

Oczywiście sypie ono błędem Unknown column 'special' in 'where clause'
Tutaj z pomocą mogłoby przyjść chyba HAVING - jednak czytałem gdzieś że jest ono sporo wolniejsze od where . Jeśli to prawda to jak bardzo spowalnia?
Może jest jakaś inna opcja, o której nie pomyślałem lub po prostu nie mam pojęcia?

0

Nazwy kolumn znane są dopiero po WHERE, a przed ORDER BY.
HAVING służy do zupełnie czegoś innego - do filtrrowania wartości zagregowanych przez GROUP BY.
Twoim problem jest użycie zapytania skorelowanego, które jest wykonywane dla każdego rekordu. Nie wiem, czy można bardziej spowolnić wykonanie zapytania...

1 użytkowników online, w tym zalogowanych: 0, gości: 1