Temat: Hinduskie kwiatki :-)
Nie żebym kogoś bronił czy ganił, ale:
Ad zliczania: SQLową funkcję count wykorzystuje się w zapytaniach grupujących i o ile dobrze pamiętam MySQLa, to w zapytaniu SELECT * nie da się użyć count. O jakim liczeniu PHPem mówisz, jeśli o funkcji mysql_num_rows() to jest to jak najbardziej prawidłowe pobranie informacji o ilości wierszy zwróconych przez bazę.
Ad ilość zapytań: o ile dobrze pamiętam, to w MySQLu jest podobnie jak w MSSQLu w kwestii puli połączeń, tzn można zdefiniować ilość połączeń jakie będą cały czas otwarte do bazy i przekazywanie ich do silnika PHP. Ponadto istnieje też funkcja mysql_connect() która otwiera stałe połączenie do bazy. Tak więc strat wydajnościowych nie ma na otwieranie/zamykanie połączeń. Inna kwestia to umiejscowienie logiki przetwarzania, ich wykonanie wydaje mi się nizbyt głupie, bo o ile dobrze zrozumiałem to dla każdego wiersza z tabeli packages jest wybierany jeden wiersz z tabeli repositories. Można oczywiście napisać pojedyńcze zapytanie, stworzyć logikę obrabiania danych w PHP, ale jest jedno ale, zapytanie będzie mało czytelne, kod obrabiający dane też. Tak jest zrobione w możliwie najprostszy sposób i wcale nie mniej wydajny.
Ad konwersji: po czym wnioskujesz, że baza była tworzona w MSAccess i potem konwertowana, bo tu nic takiego nie pokazałeś. Ponadto jeżeli była zrobiona struktura bazy (tabele, kolumny, klucze) i następnie wygenerowanie kodu SQL który to tworzy w MySQL, no cóż, powtórzę się, zrobiono to w możliwie najprostszy sposób. MS Access ma całkiem fajny i przyjazny IDE to takich prac, do MySQL nie ma podobnych narzędzi (nie licząc phpmyadmin, ale może nie ma ichniejszej wersji językowej).
Ad limitowania: nie za bardzo rozumiem o czym tu piszesz, ale jeśli mówimy o jakimś nietypowym pagingu, to cóż, powtórzę się, tak było najprościej.
Podsumowując - hindusi wzorują się w technologiach IT na Amerykanach, a Amerykanie natomiast nie mają wcale ochoty wymyślać skomplikowanych rzeczy, wręcz przeciwnie, robią wszystko w prosty sposób, bo taki jest najlepszy - najłatwiej przeanalizować działanie, wyszukać błędy i je poprawić. My Polaczki natomiast mamy tendencję do maksymalne zwięzłości, ale tym samym skomplikowaniem roboty. Tylko że jak coś po roku lub więcej okazuje się, że trzeba poprawić, to nawet sam autor nie wie, o czym pisał i o co chodziło. Wiem to sam po sobie - kilkukrotnie tworzyłem podobny kod kilka razy, bo przy potrzebie zmian po dłuższym okresie czasu, nie wiedziałem co ja napisałem i gdzie mam wprowadzić zmiany, do czasu aż nauczyłem się tworzyć kod jak naprostszy do napisania, analizowania, poprawiania, modyfikowania.
Pozdrawiam
Marek
PS: Ad procedury składowane: nie rozumiem o co wam chodziło, przecież procedura składowana wykonuje się najwydajniej, bo w procesie serwera bazy, bez konieczności przesyłania danych, pakowania/rozpakowania itd. One są po prostu najwydajniejsze, a programista ma tworzyć wydajny kod.
Krzysztof Eugeniusz Kotkowicz:
Jan Rudnik:
"Uważam po prostu, że selekcja naturalna powinna wykluczać bezmyślnych klepaczy kodu z rynku."
a Tobie Kolego nigdy w zyciu nie zdazylo sie zrobic czegos bezmyslnie? Kazdy popelnia bledy, a najwiecej Ci ktorzy twierdza ze ich nie popelniaja...
Czym innym jest pomyłka, czym innym brak podstaw.
Uważasz za błąd to że programista:
-zlicza ilość rekordów PHPem, a nie funkcją count(*) w SQL?
-tworzy kod, który wykonuje zapytanie, by potem dla każdego wynikowego rekordu tego zapytania wykonać kolejne zapytanie (przy 47 tysiącach rekordów), po czym to samo powtarza 3 razy w kodzie strony (3x47000=141 tysięcy zapytań dla jednego index.php)
-tworzy bazę w MS Access potem konwertuje ją bezmyślnie do mysql.
-Używanie select * from, by potem PHPem limitować ilość wierszy do 50/30/10/1.
Ja nie uważam tego za pomyłki. Ja uważam to za znaczne braki w wiedzy, na temat dziedziny w której się działa.
I zauważ, że jest różnica między "człowiek, który popełnił pomyłkę", a człowiek, który bezmyślnie klepie kod.Marek K. edytował(a) ten post dnia 01.12.11 o godzinie 22:00