Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Problem z NOT EXIST
Forum PHP.pl > Forum > Przedszkole
damians1
Mam dwie (istotne dla tego zapytania) tabele:

artykuly:
CODE
+----+--------------+---------+-------+-------+-----------+
| id | data_dodania | aktywne | tytul | tresc | kategoria |
+----+--------------+---------+-------+-------+-----------+


wykupione_artykuly:
CODE
+----+--------+---------+------+
| id | art_id | user_id | data |
+----+--------+---------+------+


kod sql
  1. SELECT * FROM artykuly AS a WHERE a.aktywne=1 AND NOT EXISTS (SELECT wa.id FROM wykupione_artykuly AS wa WHERE wa.user_id=25 AND wa.oferta_id=a.id) AND (a.data_dodania BETWEEN '2011-10-24 0:00:00' AND '2011-10-25 0:00:00') AND a.kategoria = '1' GROUP BY a.id ORDER BY a.id DESC LIMIT 0,20


Pierwsza tabela zawiera artykuły, druga listę wykupionych przez użytkownika artykułów (do których ma dostęp).
Zadaniem tego kodu jest pobranie listy artykułów niewykupionych przez użytkownika (te które może wykupić)
Problemem jest bardzo niska wydajność tego zapytania. przy kilku tysiącach artykułów wydajność jest niestety niska. Czy jest jakaś inna metoda (oprócz NOT IN bo tu wydajność jest niewiele lepsza) aby wydajnie pobrać te same rekordy questionmark.gif
croc
  1. SELECT * FROM artykuly WHERE id NOT IN (SELECT art_id FROM wykupione_artykuly WHERE user_id = 25) AND aktywne = 1

Pozostałe warunki sam potrafisz dopisać.
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.