Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> połączyć czy oddzielić zapytania
elmaciaso
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 9.02.2015

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


Witam.

Tworzę serwis w którym będę listował rekordy z pewnej tabeli. Zapytanie będzie miało kilka parametrów (przykładowo: p1, p2, p3, p4, p5). Generalnie chciałbym aby wyniki były zwracane wg zgodności, tj. najpierw wyniki w których wszystkie 5 parametrów są równe, następnie takie w których równe są 4 parametry, 3, itd.

Zastanawiam się co jest lepszym rozwiązaniem: rozbicie zapytań na kilka oddzielnych czy połączenie ich za pomocą UNION?

Inną sprawą jest to że jednym z parametrów będzie data (w formacie RRRR:MM:DD gg:mm:ss) i zależałoby mi na tym aby najpierw wyświetlane były rekordy o równej dacie, a następnie o maksymalnie zbliżonej. Można by to rozwiązać poprzez sortowanie ale problemem jest to że data będzie tylko jednym z atrybutów, przy czym nie będzie miała najwyższej wagi. Jak taki problem najlepiej rozwiązać w SQL?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Union będzie lepsze bo potem wynik tegoż cacka możesz sortować itp.
Go to the top of the page
+Quote Post
elmaciaso
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 9.02.2015

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


Czy sortowanie wyników jest jedyną różnicą?
Właściwie to będę chciał stosować inne kryterium sortowania dla każdego z podwyników (wg p1 dla 5 zgodnych parametrów, wg p2 dla 4, wg p4 dla 3 zgodnych itp) więc globalne sortowanie nie jest mi tak potrzebne. Interesowała mnie bardziej kwestia wydajności. Lepsze jedno wielkie czy 10 małych zapytań?

A co z opisanym przeze mnie problemem dat?
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


UNION (bez ALL) wyrzuca duplikaty (również w ramach jednego SELECTa), powinien pilnować ilości i typu poszczególnych kolumn (z typami to MySQL średnio idzie), UNION raczej nie korzysta z indeksów (do końcowego sortowania używa filesorta, czym zabija serwer)
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: 22.08.2025 - 15:29