Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Widoki w bazie czy zwyczajne zapytania ?
quality
post
Post #1





Grupa: Zarejestrowani
Postów: 172
Pomógł: 9
Dołączył: 13.02.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/smile.gif) ?

Bo wygodniejsze sa oczywiscie widoki (IMG:style_emoticons/default/smile.gif)

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Crozin
post
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


@Zyx: chyba chodzi o takie widoki (przykład akurat z MySQLa), a nie element MVC czy pochodnych.
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Osobiście nie wiem jak jest z wydajnością ale przyznam, że widoki są bardzo wygodne.
Go to the top of the page
+Quote Post
Sajrox
post
Post #5





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/winksmiley.jpg)
Ale widoki też mogą być pomocne, tylko że mogą też zaciemnić kod.
Go to the top of the page
+Quote Post
croc
post
Post #6





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


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();
Go to the top of the page
+Quote Post
batman
post
Post #7





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




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.
Go to the top of the page
+Quote Post
thek
post
Post #8





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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 (IMG:style_emoticons/default/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ą (IMG:style_emoticons/default/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ń.
Go to the top of the page
+Quote Post

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: 24.12.2025 - 09:25