2012-10-10 15 views
11

Stworzyłem 8 różnych widoków i używam wszystkich widoków wewnątrz widoku. Więc zastanawiałem się, zanim pójdę dalej z tym pomysłem. Chcę wiedzieć, czy to źle wpływa na wydajność, czy nie.Czy to źle wywołać widoki wewnątrz widoku w sql

+1

Korzystanie z widoków w celu odniesienia do innych widoków jest całkowicie dopuszczalne. Wydajność w dużej mierze zależy jednak od twojego kodu. – SchmitzIT

+2

tak długo, jak widok nie odwołuje się do siebie powinien być w porządku – atar

+0

Nie ** wywołaj ** widoków (nie są to "programy" lub kod) - wybierasz z nich. –

Odpowiedz

11

Nie, w porządku. W wielu przypadkach osobiście uważam, że lepiej jest pisać jeden widok z ogromną i trudną do zrozumienia definicją. Moim zdaniem użycie wielu widoków pozwala:

  1. Kapsuł dyskretną logikę w poszczególnych widokach.
  2. Wykorzystaj logikę w poszczególnych widokach bez konieczności powtarzania logiki (eliminując później problemy z aktualizacją).
  3. Nazwij swoją logikę, aby następny programista mógł łatwiej zrozumieć, co próbujesz osiągnąć.
2

To nie jest złe dla wydajności tylko za bycie widokiem. Może to wymagać zachowania pewnej złożoności i spowodować dodatkowe uwzględnienie, gdy chcesz zmienić schemat podstawowych tabel. Jeśli korzystasz z widoków i przyłączyli się do tych samych tabel, myślę, że byłoby to mniej skuteczne niż dołączanie do tabeli raz w jednym widoku.

+0

Świetny punkt dotyczący posiadania tych samych tabel w wielu widokach. – RubberDuck

1

Czysty fakt sprawdzania widoku z poziomu widoku nie ma żadnego negatywnego wpływu na wydajność. Nie różni się od wysyłania zapytania do tabeli z widoku.

2

Preferuję używanie widoków zagnieżdżonych, przy czym każdy widok obejmuje i nazywa niektóre przekroje danych.

Jeśli chodzi o wydajność, to może rzeczywiście poprawić wydajność, jeśli alternatywne wymagało wielokrotnego sprawdzania tych samych danych: Widok zagnieżdżony przypomina nieco tabelę tymczasową - uruchamianą raz.

Najlepszym i zalecanym sposobem odkrycia wpływu na wydajność jest wypróbowanie obu opcji i sprawdzenie wyników wyjaśniania.

5

Widoki są "kompilowane" podczas tworzenia planu wykonania. W związku z tym istnieje tylko bardzo niewielka kara za ich użycie: Dodatkowy czas potrzebny SQL Server do sprawdzenia definicji. Zwykle to opóźnienie nie jest mierzalne.

Oznacza to, że korzystanie z widoków w celach wymienionych przez Larry'ego Lustiga jest całkowicie poprawne i zachęcające.

JEDNAK: Upewnij się, że nie wprowadzasz niepotrzebnych JOINów przy użyciu tej techniki. Podczas gdy SQL Server ma mechanizmy eliminujące niepotrzebne tabele z zapytania, szybko rezygnuje, jeśli zapytanie staje się złożone. Wykonanie tych dodatkowych JOINów może spowodować znaczne spowolnienie. Jest to powód, dla którego wiele firm stosuje zasadę braku poglądów.

Tak więc: używaj widoków, ale pamiętaj, aby nie nadużywać ich.

Powiązane problemy