Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: połączyć czy oddzielić zapytania
Forum PHP.pl > Forum > Bazy danych > MySQL
elmaciaso
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?
Pyton_000
Union będzie lepsze bo potem wynik tegoż cacka możesz sortować itp.
elmaciaso
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?
mmmmmmm
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)
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.