• 25.4.2017
  • Ing. Jan Zedníček - Data Engineer & Controlling
  • 0

Views neboli pohledy mají v databázích a datových skladech své místo. Jedná se o objekty, které je v zásadě výhodné využívat, protože neobsahují data (nezabírají storage). Obsahují pouze dotaz do tabulek. Složitější T SQL view však mohou být náročnější na logické operace zejména při komplikovaných dotazech s více joiny do velkých tabulek. Tato situace se dá zase řešit Indexovanými Views (materializované pohledy).

Views jsou dobrým služebníkem, ale špatným pánem. Neuvážené zakládání Views bez managementu jako na běžícím pásu nevyhnutelně dříve nebo později povede k problémům s performance. 

K čemu se dá T SQL View použít? Konktétní Tipy

Příklady a situace kdy se dají Views využít by se daly shrnout takto:

Views jako nástroj Security

Zobrazujete pouze data, která chcete aby někdo viděl a ostatní můžete zakrýt. Můžete si ošetřit práva na view a uživatel nemá přístup do podkladových tabulek

Do Views můžeme shrnout komplexní logiku

  • Mechanické postupy – Pokud je potřeba neustále dokola joinovat 5 tabulek a aplikovat několik stejných podmínek, proč tuto logiku nezabalit do View a příště se dotazovat do něj než vám z toho hrábne? Standardizujete postup a máte jistotu, že všichni aplikují stejnou logiku.
  • Agregace nebo složitější dotazy – Views jsou dobrý způsob jak zobrazovat informace nad atomickými daty v agregované podobě.

Views jako nástroj předávání informací s business usery

Nemáte ve firmě power usery a nechcete je pouštět do db, ale přesto uživatelé nějaké znalosti SQL mají? Tím pádem je tu prostor pro zbavení se rutiních požadavků na jednoduché sestavy dat. Udělejte business userům Views s agregovanými daty, načtou si je do kontingenční tabulky a jsou happy…neztratíte celý den vymýšlením reportu.

Budování db reporting architektury nebo logické struktury

V business intelligence jsou pohledy dobrým nástrojem jak definovat datasety pro reporty a tyto datasety mít v organizované a transparentní podobě pod kontrolou

Indexované views

Možnost vytvářed indexované Views a zrychlit pomalé dotazy

T SQL Syntaxe – Create, Alter, Drop View

Vytvoření view = Create

CREATE VIEW udv_Nazev
AS
SELECT sloupce…
FROM dbo.tabulka
WHERE podmínka;

 

Změna view = Alter

ALTER VIEW udv_Nazev
AS
SELECT sloupce…
FROM dbo.tabulka
WHERE podmínka;

 

Smazání view = Drop

DROP VIEW udv_Nazev

 

Indexed view (materializovaný pohled) a SCHEMABINDING

K tomuto pohledu bychom měli přistoupit pokud chceme využít nějakých výhod vyplývajících z používání View (třeba Security nebo shrnutí komplexity), ale máme složitý a velmi pomalý dotaz, který má velké náklady na logické operace. Využijem tu indexované tsql view a v podstatě tak vytvoříme dynamicky updatovanou tabulku.

Syntaxe view se schemabindingem

Vytvoříme view a poté hned clusterovaný unique index

CREATE VIEW udv_Nazev
WITH SCHEMABINDING
AS
SELECT sloupce…
FROM dbo.tabulka
WHERE podmínka;

CREATE UNIQUE CLUSTERED INDEX IDX_udv_Nazev ON dbo.udv_Nazev(ID);

Založení indexovaného view a limitace (požadavky)

  • T SQL View musí být WITH SCHEMABINDING – Znamená to, že view je svázáno se strukturou podkladových objektů. Pokud se pokusíte změnit strukturu podkladové tabulky (např. vymazání/přejmenování sloupce který využívá view), tak vás to změnu nechá udělat až po dropnutí view. Indexované view je tak chráněno proti změnám a má vždy aktuální strukturu
  • Deterministická definice indexovaného view – Toto je občas kámen úrazu. Deterministická definice znamená, že view musí vracet stejné výsledky při aplikaci stejných podmínek. Že to tak být nemusí? Pokud použijeme ve view třeba funkci GETDATE(), tak nám bude view vracet různé výsledky v různém čase a není tak tato podmínka splněna.
  • Ve view musí být odkazováno na objekty ve stejné databázi
  • Ve view nesmí být dotaz do jiných view
  • Nedá se použít klauzule UNION, DISTINCT
5/5 - (1 vote)

Ing. Jan Zedníček - Data Engineer & Controlling

Jmenuji se Honza Zedníček a působím jako freelancer. Pracoval jsem dříve také jako BI developer, finanční controller a analytik. Vše pro společnosti z oblasti IT, bankovnictví, consultingu a výroby. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a občas neúspěšně odpálím pár balónků v golfu 🏌️

Již cca 10 let zapisuji na tento web různé návody určené zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Business intelligence, korporátních financí a reportingu.

🔥 Přihlašte se do naší Excel facebook skupiny (2.4k+ členů), kde si pomáháme Excel CZ/SK diskuse »

Leave a Reply

Your email address will not be published. Required fields are marked *