Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Problem z NOT EXIST
damians1
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 12.06.2005

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/questionmark.gif)

Ten post edytował damians1 28.10.2011, 16:05:59
Go to the top of the page
+Quote Post
croc
post
Post #2





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


  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ć.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.09.2025 - 01:57