CLASS Department βΠΡΠ΄Π΅Π»β;
name βΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅β = DATA STRING[100] (Department);
CLASS Employee βΠ‘ΠΎΡΡΡΠ΄Π½ΠΈΠΊβ;
department βΠΡΠ΄Π΅Π»β = DATA Department (Employee);
salary βΠΠ°ΡΠΏΠ»Π°ΡΠ°β = DATA NUMERIC[10,2] (Employee);
countEmployees βΠΠΎΠ»-Π²ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ²β (Department d) =
GROUP SUM 1 IF department(Employee e) = d;
salarySum βΠ‘ΡΠΌΠΌΠ°ΡΠ½Π°Ρ Π·Π°ΡΠΏΠ»Π°ΡΠ°β (Department d) =
GROUP SUM salary(Employee e) IF department(e) = d;
employeesCount βΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ² Ρ Π·Π°ΡΠΏΠ»Π°ΡΠΎΠΉ > Nβ (Department d, NUMERIC[10,2] N) =
GROUP SUM salary(Employee e) IF department(e) = d AND salary(e) > N;
Iri basa rinotsanangurwa kune risingaperi nhamba yezvinokosha zveN (semuenzaniso, chero ipi zvayo yakashata yakakosha). Naizvozvo, haugone kuisa MATERIALIZED pairi. Saka ichi chidziviso chine musoro, kwete chehunyanzvi (kureva kuti, kwete nekuti hatina kukwanisa kuchiita). Zvikasadaro, hapana zvirambidzo. Unogona kushandisa mapoka, kuronga, UYE uye OR, CHIKAMU, kudzokorora, nezvimwe.
Semuenzaniso, mudambudziko 2.2 yechinyorwa chakapfuura, unogona kuisa MATERIALIZED pamabasa ese ari maviri:
bought 'ΠΡΠΏΠΈΠ»' (Customer c, Product p, INTEGER y) =
GROUP SUM sum(Detail d) IF
customer(order(d)) = c AND
product(d) = p AND
extractYear(date(order(d))) = y MATERIALIZED;
rating 'Π Π΅ΠΉΡΠΈΠ½Π³' (Customer c, Product p, INTEGER y) =
PARTITION SUM 1 ORDER DESC bought(c, p, y), p BY c, y MATERIALIZED;
SELECT contactName(Customer c), name(Product p) WHERE rating(c, p, 1997) < 3;
Iyo system pachayo ichagadzira tafura imwe ine makiyi emhando kasitoma, chigadzirwa ΠΈ INTEGER, ichawedzera minda miviri kwairi uye ichagadziridza iyo munda tsika mavari nechero shanduko. Kana mamwe mafoni kumabasa aya aitwa, haaverengerwe, asi kuti kukosha kunoverengwa kubva kuminda inoenderana.
level (Group child, Group parent) = RECURSION 1l IF child IS Group AND parent == child
STEP 2l IF parent == parent($parent);
isParent (Group child, Group parent) = TRUE IF level(child, parent) MATERIALIZED;
Sezvo nokuda kwebasa isParent yakanyorwa MATERIALIZED, ipapo tafura ine makiyi maviri (mapoka) ichagadzirirwa iyo, umo munda isParent chichava chechokwadi chete kana kiyi yekutanga iri mwana wechipiri. Nhamba yezvinyorwa mutafura iyi ichave yakaenzana nenhamba yemapoka anowedzerwa neavhareji kudzika kwemuti. Kana iwe uchida, semuenzaniso, kuverenga nhamba yevazukuru verimwe boka, unogona kushandisa basa iri:
childrenCount (Group g) = GROUP SUM 1 IF isParent(Group child, g);
Pachave pasina CTE mumubvunzo weSQL. Pane kudaro pachave ne GROUP BY iri nyore.
Uchishandisa iyi michina, iwe unogona zvakare kurerutsa dhatabhesi kana zvichidikanwa:
CLASS Order 'ΠΠ°ΠΊΠ°Π·';
date 'ΠΠ°ΡΠ°' = DATA DATE (Order);
CLASS OrderDetail 'Π‘ΡΡΠΎΠΊΠ° Π·Π°ΠΊΠ°Π·Π°';
order 'ΠΠ°ΠΊΠ°Π·' = DATA Order (OrderDetail);
date 'ΠΠ°ΡΠ°' (OrderDetail d) = date(order(d)) MATERIALIZED INDEXED;
Pakudaidza chiitiko zuva kune mutsara wekurongeka, munda une index ichaverengwa kubva patafura ine mitsara yekuraira. Kana zuva reodha rachinja, sisitimu yacho pachayo inozoverengera otomatiki iyo denormalized date mumutsara.
MaDBMS emazuva ano ekutengeserana ane nzira dzakafanana: MATERIALIZED VIEW ine FAST REFRESH (Oracle) uye INDEXED VIEW (Microsoft SQL Server). MuPostgreSQL, MATERIALIZED VIEW haigone kuvandudzwa mukutengeserana, asi nekukumbira chete (uye kunyangwe nezvirambidzo zvakanyanya), saka isu hatizvifunge. Asi vane matambudziko akati wandei anomisa zvakanyanya kushandiswa kwavo.
Chekutanga, unogona chete kugonesa kuita zvinhu kana iwe watogadzira yenguva dzose VIEW. Zvikasadaro, iwe uchafanirwa kunyora zvakare zvikumbiro zvasara kuti uwane iyo ichangobva kugadzirwa maonero kuti ushandise iyi materialization. Kana kuti siya zvese sezvazviri, asi zvichange zvisisashande kana paine imwe yatove yakaverengerwa data, asi mizhinji mibvunzo haiwanzo kuishandisa, asi iverenge zvakare.
Chechipiri, vane nhamba huru yezvirambidzo:
pangataura
5.3.8.4 General Restrictions paKukurumidza Kufefetera
Zvekuona zvinhu ne CUBE, ROLLUP, seti dzemapoka, kana kubatanidzwa kwavo, zvinotemerwa zvinotevera zvinoshanda:
The SELECT list inofanira kuva nemusiyanisi wemapoka anogona kunge ari a GROUPING_ID shanda pane zvese GROUPBY matauriro kana GROUPING inoshanda imwe kune imwe neimwe GROUPBY kutaura. Somuenzaniso, kana GROUPBY chirevo chechimiro chechimiro ndeche "GROUPBYCUBE(a, b)", zvino SELECT list inofanira kuva ne"GROUPING_ID(a, b)Β»kana Β«GROUPING(a)ANDGROUPING(b)Β»kuti maonero akaitwa zvinhu ave kukurumidza kuvandudzwa.
GROUPBY haifanire kuguma nemapoka akadzokorora. Semuyenzaniso, "GROUP BY a, ROLLUP(a, b)"haisi kukurumidza kudzoreredzwa nekuti inokonzeresa kuita duplicate mapoka"(a), (a, b), AND (a)".
5.3.8.7 Zvirambidzo paKumutsiridza Nekukurumidza paMaonero Akaitwa neUNION ALL
Materialized maonero pamwe UNIONALL set opareta tsigiro iyo REFRESHFAST sarudzo kana zvinotevera zvinogutsa:
Mubvunzo wekutsanangura unofanirwa kuva ne UNIONALL opareta padanho repamusoro.
The UNIONALL opareta haigone kuisirwa mukati me subquery, kunze kumwe chete: Iyo UNIONALL inogona kuva mune subquery mu FROM clause yakapa iyo yekutsanangura mubvunzo ndeye fomu SELECT * FROM (ona kana kubvunza ne UNIONALL) semumuenzaniso unotevera:
GADZIRA VIEW view_with_unionall AS (SARUDZA c.rowid crid, c.cust_id, 2 umarker KUBVA kuvatengi c PAPI c.cust_last_name = 'Smith' UNION OSE SARUDZA c.rowid crid, c.cust_id, 3 umarker KUBVA kuvatengi c PAPI c.cust_last_ 'Jones'); GADZIRA MATERIALIZED VIEW unionall_inside_view_mv REFRESH FAST ON DEMAND AS SARUDZA * FROM view_with_unionall;
Iyo data yekuwana pfuma yemushandisi-inotsanangurwa basa inofanirwa kunge iri NO SQL, uye kunze kwekuwana pfuma inofanira kuva NO.
Common language runtime (CLR) mabasa anogona kuoneka mune yakasarudzwa runyorwa rwemaonero, asi haigone kuve chikamu chetsananguro ye clustered index key. CLR mabasa haagone kuoneka muWHERE clause yemaonero kana ON clause yeJOIN mashandiro mukuona.
Derived tafura (inotsanangurwa nekutsanangura a SELECT chirevo mu FROM clause)
Kuzvibatanidza
Kudoma mbiru nekushandisa SELECT * or SELECT <table_name>.*
DISTINCT STDEV, STDEVP, VAR, VARP, kana AVG
Common table expression (CTE)
Float1, chinyorwa, ntext, mufananidzo, XML, kana filestream mbiru
Subquery OVER clause, iyo inosanganisira chinzvimbo kana kubatanidza mahwindo mabasa
Manyoro-akazara predicate (CONTAINS, FREETEXT) SUM basa rinonongedza chirevo chisingachinji ORDER BY
CLR mushandisi-inotsanangurwa aggregate basa TOP CUBE, ROLLUP, kana GROUPING SETS operators
MIN, MAX UNION, EXCEPT, kana INTERSECT operators TABLESAMPLE
Tafura dzakasiyana OUTER APPLY or CROSS APPLY PIVOT, UNPIVOT
If GROUP BY iripo, iyo VIEW tsananguro inofanira kuva COUNT_BIG(*) uye haifaniri kuzara HAVING. Izvi GROUP BY zvirambidzo zvinoshanda chete kune iyo indexed yekuona tsananguro. Mubvunzo unogona kushandisa maonero ane indexed muurongwa hwayo hwekuita kunyange kana isingagutsi izvi GROUP BY kurambidzwa.
Kana iyo yekuona tsananguro ine a GROUP BY clause, kiyi yeiyo yakasarudzika clustered index inogona kungoreva makoramu anotsanangurwa mu GROUP BY chirevo.
Derived tafura (inotsanangurwa nekutsanangura a SELECT chirevo mu FROM clause)
Kuzvibatanidza
Kudoma mbiru nekushandisa SELECT * or SELECT <table_name>.*
DISTINCT STDEV, STDEVP, VAR, VARP, kana AVG
Common table expression (CTE)
Float1, chinyorwa, ntext, mufananidzo, XML, kana filestream mbiru
Subquery OVER clause, iyo inosanganisira chinzvimbo kana kubatanidza mahwindo mabasa
Manyoro-akazara predicate (CONTAINS, FREETEXT) SUM basa rinonongedza chirevo chisingachinji ORDER BY
CLR mushandisi-inotsanangurwa aggregate basa TOP CUBE, ROLLUP, kana GROUPING SETS operators
MIN, MAX UNION, EXCEPT, kana INTERSECT operators TABLESAMPLE
Tafura dzakasiyana OUTER APPLY or CROSS APPLY PIVOT, UNPIVOT
Inoshanda sei? PostgreSQL inoshandiswa se "virtual muchina". Iko kune yakaoma algorithm mukati inovaka mibvunzo. Here mabviro. Uye hapangori hombe seti yeheuristics ine boka re ifs. Saka, kana uine mwedzi mishoma yekudzidza, unogona kuedza kunzwisisa zvivakwa.