Zacznijmy to po kolei analizować. Po pierwsze, SELECT i widok. Jak wiemy, widok jest oparty na wyniku jakiegoś SELECTa. Główną różnicą pomiędzy widokiem a zapytaniem jest to, że widok można dalej obrabiać – dodawać kolejne warunki do zapytania, filtrować część kolumn. Jeśli nie jesteśmy zainteresowani dalszą obróbką materiału, nie jesteśmy zmuszeni do stosowania widoku ze względów na zarządzanie uprawnieniami poszczególnych użytkowników (np. potrzebujemy udostępnić użytkownikowi jakieś dane z tabeli, do której inaczej nie ma on dostępu), to SELECT wydaje się lepszym rozwiązaniem.
Druga sprawa, porównując SELECT z procedurą składowaną też nie jest to tak oczywiste jakby się wydawało. Teoretycznie procedura składowana to problem – MySQL nie udostępnia jakichkolwiek narzędzi, które byłyby pomocne w analizie działania procedur i funkcji składowanych. Nie da się też w prosty sposób określić, jaki element procedury w największym stopniu zużywa zasoby. Ogólnie, bardziej skomplikowana procedura składowana, jeśli trzeba wykonać jej analizę, to taki koszmarek. Z drugiej jednak strony, wiemy że MySQL lubi proste, szybkie zapytania. Gdyby udało się naszego wielkiego SELECTa przepisać tak, żeby zastąpić go większą ilością mniejszych, szybkich zapytań, może się okazać że to jest znacznie bardziej wydajne rozwiązanie. W takiej sytuacji mamy zasadniczo dwie opcje. Możemy zmodyfikować kod aplikacji i z jej poziomu wykonać wszystkie potrzebne operacje, możemy też (o ile język procedur składowanych używany przez MySQL to umożliwi) zawrzeć te wszystkie operacje i zapytania w ramach jednej procedury składowanej.
Jak widać, na prawdę trudno odpowiedzieć na tak postawione pytanie. Wszystko zależy od tego, co dokładnie chcemy osiągnąć. Czy konieczne jest dążenie do osiągnięcia jak najlepszej wydajności? Jeśli tak, może się okazać, że procedura składowana będzie lepszym rozwiązaniem. Jeśli jednak nie, to raczej nie ma sensu iść w tą stronę (chyba że, ponownie, osiągniemy w ten sposób inne korzyści – np. zarządzanie prawami dostępu do danych – procedury także można w ten sposób wykorzystywać). Zapytanie czy widok? Zależy co potrzebujemy dalej robić z wynikiem.
Komentarze