Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Widoki w bazie czy zwyczajne zapytania ?
Forum PHP.pl > Forum > PHP
quality
Witam
Tak sie zastanawiam, czy przy skomplikowanych zapytaniach lepiej jest robic widoki w bazie danych i operowac na nich jak na zwyczajnej tabeli czy pobierac wszystko prosto z php ?

Chodzi mi dokladnie o listy np artykulow. mam tutaj polaczone ze soba okolo 5 tabel, plus jest dodatkowo limit ( stronnicowanie)

Ktore rozwiazanie jest wydajniejsze i bardziej przenosne smile.gif ?

Bo wygodniejsze sa oczywiscie widoki smile.gif

Pozdrawiam
Zyx
Jakie widoki w bazie danych?! Widok to kod PHP zarządzający warstwą widoku, który ma się uruchomić i tyle, a nie pobierać nie wiadomo skąd. Co właściwie chcesz osiągnąć, kombinując w ten sposób?
Crozin
@Zyx: chyba chodzi o takie widoki (przykład akurat z MySQLa), a nie element MVC czy pochodnych.
Fifi209
Osobiście nie wiem jak jest z wydajnością ale przyznam, że widoki są bardzo wygodne.
Sajrox
Ja bym zaczął od tego by zmniejszych liczbę tabel. 5 tabel w zapytaniu to trochę dużo. Ja staram się stosować max 2 tabele w jednym zapytaniu.
Obecna wersja MySql powoduje że często lepiej utworzyć 5 pojedyńczych zapytań SELECT niż jedno z 5 tabelami.

Jeśli masz jeszcze stałe połącz\enie z bazą mysql_pconnect() to warto pomysleć nad rozłożeniem tego zapytania na kilka mniejszych winksmiley.jpg
Ale widoki też mogą być pomocne, tylko że mogą też zaciemnić kod.
croc
Bardziej przenośne są na pewno widoki, bo przenoszenie z PHP wymaga dwóch składników (PHP + baza), a z widokami tylko jednego (tylko bazy). Ale dla dużego systemu i tak lepiej zrobić wg mnie obiektową logikę, która będzie pozwalała na instrukcje typu:

  1. $article = new Article(201);
  2. echo $article->getAuthor()->getName();
batman
W przypadku postgresa nie ma znaczenia czy w zapytaniu skorzystasz z widoku, czy z dużego zapytania. Czas potrzebny na wykonanie obu zapytań jest bardzo podobny. W MySQL nie wiem jak to jest, w MS SQL zaobserwowałem duży wzrost wydajności.
Niestety nie miałem okazji zagłębić się w teorię widoków, ale jestem pewien, że są odpowiednie mechanizmy cache, które przyspieszą ich działanie. Niezaprzeczalną zaletą widoków jest zdecydowane uproszczenie zapytania.
thek
Widoki ( ja podczas studiów spotkałem się z innym określeniem na ten mechanizm - perspektywa. Z tego co widziałem, takie jest też polskie tłumaczenie tego mechanizmu w pewnych narzędziach, choćby phpmyadmin ) są wygodne i to za nimi przemawia. Sam czasem stosuję by uniknąć wielokrotnego joinowania podczas pisania zapytań. Stosuję to jednak rzadko, choć z tego co odczuwam na serwerze (a właściwie to nie odczuwam tongue.gif ), to brak negatywnego wpływu. Mają niestety jednak swoje ograniczenia, zwłaszcza w przypadku modyfikacji rekordów, o czym radzę poczytać, by nie było niespodzianek, dlaczego insert czy update nie działają winksmiley.jpg Ogólnie perspektywa to po prostu zapytanie SQL przechowywane po stronie serwera bazy. Stąd mechanizmy cache'owania są dla niego dostępne i działają tak, jakbyś używał tego zapytania w formie normalnej. Skoro więc zmieniasz w nim zazwyczaj niewiele parametrów w warunkach itp, to wiele wyników łapie się z pamięci podręcznej i stąd bywa wrażenie szybkości. Z nowszymi silnikami zapewne jakieś dodatkowe przechowywanie binarne występuje, co pewnie ma drobny wpływ na wydajność. Tak więc sam mechanizm jest głównie dla programistów jako ułatwienie w pisaniu zapytań.
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.