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 |
|
|
|
![]() |
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?
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
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. |
|
|
|
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:
|
|
|
|
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. |
|
|
|
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ń.
|
|
|
|
![]() ![]() |
|
Aktualny czas: 24.12.2025 - 09:25 |