kepke
8.08.2004, 22:19:30
Musze zrobic cos takiego. Pobrac z bazy a dokladniej z komorki 'miasto' wszystkie rekordy i wyswietlic je w selekcie alfabetycznie. Chodzi mi o to zeby sie nie powtarzaly. Np ulozyc miasta: Kraków, Krynica, Kryspinów itd
Jak cos takiego zrobic?
SELECT miasto FROM tabela GROUP BY miasto ORDER BY miasto ASC
Nie jestem pewien czy zadziała ale powinno. Jakby były jakieś błędy to napisz.
SELECT DISTINCT miasto FROM tabela ORDER BY miasto
kepke
8.08.2004, 22:26:56
To takie proste zapytanie ma byc? Ale chyba to nie uwzgledni tego zeby nie powtarzac rekordow. Musze sprowbowac zaraz. Dzieki
To ktore bedzie lepsze?
Oba uwzglednia niepowtarzalnosc miast, aczkolwiek wg mnie bardziej nadaje sie to z DISTINCT, poniewaz dedykowanym przeznaczeniem tej klauzuli jest wlasnie zwracanie unikalnych wynikow, w przypadku GROUP BY jest to jakby dzialanie uboczne.
Cytat(FiDO @ 2004-08-08 23:26:34)
SELECT DISTINCT miasto FROM tabela ORDER BY miasto
FiDO: Kiedyś w jakimś zapytaniu użyłem SELECT DISTINCT ale zapytania strasznie wolno się wykonywały (kilkakrotnie dłużej niż z GROUP BY).
Nie orientujesz się czy możliwe jest aby była taka różnica?
Szczerze mowiac nie.. sprawdze u siebie czy tez bede tak mial.
PS. Duza ta tabela byla ? Wyciagales tylko jedna kolumne czy wiecej ?
kepke
8.08.2004, 22:36:29
Tak w ogole to dzieki chlopaki za pomoc
Oba daja takie same wyniki a z szybkoscie to ja nie wiem bo nie mam tak rozbudowanej bazy.
Wyciągałem jedną tylko jedną kolumnę a tabela była chyba średnich rozmiarów. Nie pamiętam dokładnie... jakieś kilkaset rekordów.
według moich testów, przynajmniej na najprostrzych zapytaniach, operujących na kolumnie tekstowej, DISTINCT jest minimalnie szybsze od GROUP BY (co zresztą również wydaje mi się naturalne, gdzyż takie właśnie jest jego przeznaczenie)
Zrobilem test na tabeli z okolo 40 tys. rekordow, unikalnych jest troche ponad 300. DISTINCT byl _znacznie_ szybszy (ok 0.0008 wzgledem 0.1xxx dla GROUP BY), jednak jest jedno "ale". Wynik zwrocony przy pomocy DISTINCT nie jest posortowany, za to ten z GROUP BY jest. Gdy wiec dodamy do DISTINCT'a sortowanie, aby otrzymac te same wyniki (w tej samej kolejnosci), czasy bardzo zblizaja sie do siebie (co znaczy, ze wiekszosc tego zapytania to jest wlasnie sortowanie), a roznica jest dopiero na trzecim miejscu po przecinku.
Dzięki wielkie za rozwianie moich wątpliwości. Widzę, że to co działo się wtedy u mnie było jakimś dziwnym zbiegiem okoliczności nie posiadającym logicznego wytłumaczenia.
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.