Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 4 Dołączył: 6.05.2007 Skąd: Wrocław Ostrzeżenie: (0%)
|
Witam, mam taki oto problem.
Mam pobrać z bazy danych kilka rekordów wg jakiegoś _skomplikowanego_ kryterium. I teraz można tak: 1. pobrać skomplikowanym zapytaniem SQL te kilka rekordów, albo 2. pobrać dużą ilość rekordów i potem PHPem wyłowić odpowiednie rekordy Szybciej zadziała 1 czy 2? Dzięki z góry za odpowiedź. Ten post edytował wojckr 16.09.2007, 21:09:28 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 10 Dołączył: 8.11.2006 Skąd: Warszawa Ostrzeżenie: (0%)
|
Wyszukiwanie odpowiednich rekordów z tablicy PHP'owej ma złożoność ~n.
Możesz to przyspieszyć indeksując tę tablicę wartościami komórki, według której będziesz coś wyszukiwał, wtedy złożoność masz ~log(n). Jednak lepiej zrobić to na poziomie bazy danych, tam zakładając index na daną kolumnę dostajesz również złożoność obliczeniową ~log(n). Nie jestem na 100% pewny, ale MySQL ma jedynie zaimplementowany algorytm NESTED LOOP do łączenia tabel. Ma on kiepską złożoność obliczeniową dlatego w bardziej skomplikowanym zapytaniu staraj się uzyskać maksymalną selekcję przed złączaniem tabel. Mam nadzieję, że to ci coś pomogło, ale generalnie bym ten problem podsumował tak: - wszystkie kwestie związane z pozyskaniem danych staraj się rozwiązać na poziomie bazy danych, gdzie masz dedykowane do tego narzędzia. Cały czas pracują nad nimi developerzy i raczej bym polegał na ich doświadczeniu zamiast implementować własne algorytmy przetwarzania danych. |
|
|
|
wojckr SQL czy PHP 16.09.2007, 21:05:43
slepiec to może ja sie dołożę do tego tematu; Jak szybkie ... 16.09.2007, 21:16:14
Cezar708 popieram przedmówców, jeśli chodzi o dane zdecydow... 17.09.2007, 10:16:59
vokiel Tak jak mówi prond najlepiej wykonać większość sel... 17.09.2007, 10:18:23 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 12:07 |