Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> SQL czy PHP, co zadziała szybciej?
wojckr
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
prond
post
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.
Go to the top of the page
+Quote Post

Posty w temacie


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: 9.10.2025 - 00:05