Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [sql] in w zapytaniu
Forum PHP.pl > Forum > Przedszkole
Bojakki
Znaalzlem taka poradę:
Cytat
1) Unikaj w zapytaniach alternatyw: (SELECT * FROM t1 WHERE c1 = 1 OR c2 = 2);
W wielu przypadkach MySQL nie potrafi poprawnie wykorzystać indeksów. Jeżeli jest konieczne wykorzystanie alternatywy upewnij się że obie kolumny są zawarte w jednym indeksie. Jeżeli to nie przyniosło rezultatu sprawdź czy wykonanie osobno zapytań jest szybsze. Jeżeli tak to można próbować połączyć zapytanie za pomocą unii:

SELECT * FROM t1 WHERE c1 = 1 UNION SELECT * FROM t1 WHERE c2 = 2 ORDER BY c_order;

W takim wypadku robione są osobno dwa zapytania, potem łączone. Wspólny wynik podlega dyrektywom ORDER, GROUP BY, HAVING…

Jeżeli OR dotyczy tej samej kolumny proponuję użyć skladni IN.


Jak tego IN uzyc w np. takim zapytaniu:

  1. SELECT * FROM t1 WHERE c1 = 1 OR c1 = 4 OR c1 = 12);
Fifi209
WHERE c1 in(1,4,12)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.