Ny fifandanjana dia manoratra sy mamaky ao anaty tahiry
Tamin'ny teo aloha lahatsoratra Nofaritako ny foto-kevitra sy ny fampiharana ny angon-drakitra miorina amin'ny fototry ny asa, fa tsy ny latabatra sy ny saha toy ny amin'ny angon-drakitra mifandraika. Izy io dia nanome ohatra maro mampiseho ny tombony amin'ity fomba fiasa ity raha oharina amin'ny fomba mahazatra. Maro no nahita fa tsy maharesy lahatra azy ireo.
Amin'ity lahatsoratra ity, hasehoko ny fomba ahafahan'ity hevitra ity ahafahanao mandanjalanja haingana sy mora amin'ny fanoratana sy famakiana amin'ny angon-drakitra tsy misy fiovana amin'ny lojika miasa. Ny fiasa mitovy amin'izany dia noezahina hampiharina amin'ny DBMS ara-barotra maoderina (indrindra, Oracle sy Microsoft SQL Server). Any amin'ny faran'ny lahatsoratra dia hasehoko fa ny zavatra nataon'izy ireo, raha lazaina amin'ny fomba malefaka, dia tsy nandaitra tsara.
famaritana
Tahaka ny teo aloha, ho an'ny fahatakarana tsara kokoa dia hanomboka ny famaritana miaraka amin'ny ohatra aho. Aoka hatao hoe mila mampihatra ny lojika izay hamerina ny lisitry ny departemanta misy ny isan'ny mpiasa ao aminy sy ny karamany manontolo.
Ao amin'ny angon-drakitra functional dia ho toy izao:
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;
Ny fahasarotana amin'ny fanatanterahana ity fanontaniana ity amin'ny DBMS rehetra dia hitovy amin'ny O (isan'ny mpiasa)satria io kajikajy io dia mitaky fitarafana ny latabatry ny mpiasa iray manontolo ary avy eo manakambana azy ireo araka ny sampana. Hisy ihany koa ny fanampim-panampiana kely (mino izahay fa betsaka kokoa ny mpiasa noho ny sampan-draharaha) arakaraka ny drafitra nofidina O (ny isan'ny mpiasa) na O (isan'ny departemanta) ho an'ny vondrona sy ny sisa.
Mazava fa mety tsy mitovy amin'ny DBMS isan-karazany ny overhead famonoana, saingy tsy hiova amin'ny fomba rehetra ny fahasarotana.
Amin'ny fampiharana tolo-kevitra, ny DBMS miasa dia hamorona subquery iray izay hanao kajy ny soatoavina ilaina ho an'ny departemanta, ary avy eo dia manao JOIN miaraka amin'ny latabatra departemanta hahazoana ny anarana. Na izany aza, ho an'ny asa tsirairay, rehefa manambara dia azo atao ny mametraka marika MATERIALIZED manokana. Ny rafitra dia hamorona sehatra mifanaraka amin'izany ho azy ho an'ny asa tsirairay. Rehefa manova ny sandan'ny asa iray dia hiova ihany koa ny sandan'ny saha amin'ny fifanakalozana mitovy. Rehefa miditra amin'ity asa ity dia ho azo ny saha efa nokajiana mialoha.
Indrindra indrindra, raha mametraka MATERIALIZED ho an'ny fiasa ianao countEmployees ΠΈ salarySum, avy eo dia ampiana saha roa eo amin'ny latabatra misy ny lisitry ny departemanta, izay hitahiry ny isan'ny mpiasa sy ny karamany manontolo. Isaky ny misy fiovana eo amin'ny mpiasa, ny karamany na ny sampana misy azy, dia hanova ho azy ny sandan'ireo sehatra ireo ny rafitra. Ny fangatahana etsy ambony dia hiditra mivantana amin'ireo saha ireo ary hotanterahina ao O (isan'ny departemanta).
Inona avy ireo fameperana? Zavatra iray ihany: ny fiasa toy izany dia tsy maintsy manana isa voafetra amin'ny soatoavina fampidirana izay mamaritra ny sandany. Raha tsy izany dia tsy ho azo atao ny manamboatra latabatra mitahiry ny sandany rehetra, satria tsy misy latabatra misy andalana tsy manam-petra.
ohatra:
employeesCount βΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ² Ρ Π·Π°ΡΠΏΠ»Π°ΡΠΎΠΉ > Nβ (Department d, NUMERIC[10,2] N) =
GROUP SUM salary(Employee e) IF department(e) = d AND salary(e) > N;
Ity fiasa ity dia voafaritra ho an'ny sanda tsy misy fetran'ny N (ohatra, ny sanda ratsy rehetra dia mety). Noho izany, tsy afaka mametraka MATERIALIZED ianao. Noho izany dia fetra lojika izany fa tsy ara-teknika (izany hoe tsy hoe tsy afaka nampihatra izany). Raha tsy izany dia tsy misy famerana. Azonao atao ny mampiasa grouping, sorting, AND and OR, PARTITION, recursion, sns.
Ohatra, ao amin'ny olana 2.2 amin'ny lahatsoratra teo aloha, azonao atao ny mametraka MATERIALIZED amin'ny fiasa roa:
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;
Ny rafitra mihitsy no hamorona latabatra iray misy fanalahidy karazana Customer, Product ΠΈ INTEGER, dia hanampy saha roa amin'izany ary hanavao ny soatoavin'ny saha ao aminy miaraka amin'ny fiovana rehetra. Rehefa misy fiantsoana bebe kokoa amin'ireo fiasa ireo dia tsy hokajiana izy ireo, fa ny sandany kosa dia hovakiana avy amin'ny saha mifanaraka amin'izany.
Amin'ny fampiasana an'io mekanika io, azonao atao, ohatra, ny manala ny recursions (CTE) amin'ny fanontaniana. Indrindra indrindra, diniho ireo vondrona mamorona hazo mampiasa ny fifandraisan'ny zanaka/ray aman-dreny (ny vondrona tsirairay dia manana rohy mankany amin'ny ray aman-dreniny):
parent = DATA Group (Group);
Ao amin'ny angon-drakitra miasa, ny lojika recursion dia azo faritana toy izao manaraka izao:
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;
Satria ho an'ny asa isParent dia voamarika hoe MATERIALIZED, avy eo dia hisy latabatra misy fanalahidy roa (vondrona) hatsangana ho azy, izay ahitana ny saha. isParent ho marina raha tsy zanaky ny faharoa ny lakile voalohany. Ny isan'ny fidirana amin'ity tabilao ity dia hitovy amin'ny isan'ny vondrona ampitomboina amin'ny salan'ny halalin'ny hazo. Raha mila, ohatra, ny manisa ny isan'ny taranaky ny vondrona iray ianao, dia azonao ampiasaina ity fiasa ity:
childrenCount (Group g) = GROUP SUM 1 IF isParent(Group child, g);
Tsy hisy CTE amin'ny fangatahana SQL. Ho solon'izay dia hisy GROUP BY tsotra.
Amin'ny fampiasana an'io mekanika io, azonao atao ny manafoana ny angon-drakitra raha ilaina:
CLASS Order 'ΠΠ°ΠΊΠ°Π·';
date 'ΠΠ°ΡΠ°' = DATA DATE (Order);
CLASS OrderDetail 'Π‘ΡΡΠΎΠΊΠ° Π·Π°ΠΊΠ°Π·Π°';
order 'ΠΠ°ΠΊΠ°Π·' = DATA Order (OrderDetail);
date 'ΠΠ°ΡΠ°' (OrderDetail d) = date(order(d)) MATERIALIZED INDEXED;
Rehefa miantso asa daty ho an'ny andalana baiko, ny saha misy fanondroana dia hovakiana avy amin'ny latabatra misy andalana. Rehefa miova ny datin'ny baiko dia ny rafitra mihitsy no hanao kajy ho azy ny daty tsy ara-dalΓ na ao amin'ny tsipika.
tombony
Inona no anton'izany mekanika rehetra izany? Ao amin'ny DBMS mahazatra, raha tsy manoratra fanontaniana indray, ny developer na DBA dia tsy afaka manova indeksa fotsiny, mamaritra ny antontan'isa ary milaza amin'ny mpandrindra fangatahana ny fomba hanatanterahana azy ireo (ary ny HINTs dia tsy misy afa-tsy amin'ny DBMS ara-barotra). Na manao ahoana na manao ahoana ny ezaka ataon'izy ireo dia tsy ho vitany ny hamita ny fanontaniana voalohany ao amin'ny lahatsoratra ao O (isan'ny departemanta) tsy manova fanontaniana na manampy trigger. Ao amin'ny drafitra natolotra, amin'ny dingana fampandrosoana dia tsy mila mieritreritra momba ny firafitry ny fitahirizana angon-drakitra sy ny fitambarana ampiasaina ianao. Izany rehetra izany dia azo ovaina mora foana amin'ny lalitra, mivantana amin'ny asa.
Amin'ny fampiharana dia toa izao. Ny olona sasany dia mamorona lojika mivantana mifototra amin'ny asa atao. Tsy azon'izy ireo ny algorithm sy ny fahasarotany, na ny drafitra famonoana, na ny karazana fiaraha-miasa, na ny singa ara-teknika hafa. Ireo olona ireo dia mpandinika raharaham-barotra kokoa noho ny mpamorona. Avy eo, izany rehetra izany dia mandeha amin'ny fitsapana na fandidiana. Mamela ny firaketana an-tsoratra fanontaniana efa ela. Rehefa hita ny fanontaniana lava dia misy olona hafa (ara-teknika kokoa - indrindra DBA) manapa-kevitra ny hamela ny MATERIALIZED amin'ny asa mpanelanelana sasany. Mampihena kely ny firaketana izany (satria mitaky fanavaozana sehatra fanampiny amin'ny fifampiraharahana). Na izany aza, tsy io fanontaniana io ihany no manafaingana be, fa koa ny hafa rehetra mampiasa an'io fiasa io. Amin'izay fotoana izay ihany koa dia mora ny manapa-kevitra hoe iza amin'ireo asa hotanterahina. Paramètre roa lehibe: ny isan'ny soatoavina azo atao (izany no isan'ny rakitra ao amin'ny latabatra mifanandrify), ary impiry izy io no ampiasaina amin'ny asa hafa.
analogs
Ny DBMS ara-barotra maoderina dia manana fomba fiasa mitovy: MATERIALIZED VIEW miaraka amin'ny FAST REFRESH (Oracle) sy INDEXED VIEW (Microsoft SQL Server). Ao amin'ny PostgreSQL, ny MATERIALIZED VIEW dia tsy azo havaozina amin'ny fifampiraharahana, fa amin'ny fangatahana ihany (ary na dia misy fameperana henjana aza), noho izany dia tsy dinihinay izany. Saingy manana olana maro izy ireo izay mametra ny fampiasana azy.
Voalohany, azonao atao ny mametraka materialization raha efa namorona VIEW mahazatra ianao. Raha tsy izany, dia tsy maintsy manoratra ny fangatahana sisa ianao mba hidirana amin'ny fijery vao noforonina mba hampiasana an'io fametahana io. Na avelao ny zava-drehetra, fa farafaharatsiny dia tsy mahomby raha toa ka misy angon-drakitra efa voalamina mialoha, saingy maro ny fanontaniana tsy mampiasa azy io, fa mamerina izany.
Faharoa, manana fameperana marobe izy ireo:
Oracle
5.3.8.4 Fameperana ankapobeny momba ny fanavaozana haingana
Ny fanontaniana mamaritra ny fomba fijery mivaingana dia voafetra toy izao manaraka izao:
Ny fomba fijery mivaingana dia tsy tokony ahitana references amin'ny fomba fiteny tsy miverimberina toy ny SYSDATE ary ROWNUM.
Ny fomba fijery mivaingana dia tsy tokony ahitana references RAW or LONGRAW karazana data.
Ary koa, ny fomba famelombelomana nofidinao dia tsy hahomby tsara raha:
Ny fangatahana famaritana dia mampiasa rindran-damba ivelany izay mitovitovy amin'ny fidirana anatiny. Raha toa ka misy fanakambanana toy izany ny fangatahana famaritana, dia diniho ny hanoratra indray ny fangatahana famaritana mba hahitana ny fidirana anatiny.
The SELECT Ny lisitry ny fijery mivaingana dia misy fanehoan-kevitra amin'ny tsanganana avy amin'ny latabatra maromaro.
Ny famaritana ny fanontaniana momba ny fomba fijery mivaingana miaraka amin'ny fitambarana na ny fiarahana dia misy fameperana manaraka ny fanavaozana haingana:
Famerenana haingana dia tohana ho an'ny roa ONCOMMIT ary ONDEMAND fomba fijery mivaingana, kanefa mihatra ireto fameperana manaraka ireto:
Ny tabilao rehetra amin'ny fijery mivaingana dia tsy maintsy manana diarin'ny fijerena mivaingana, ary ny diarin'ny fijerena mivaingana dia tsy maintsy:
Fenoy ny tsanganana rehetra avy amin'ny tabilao voalaza ao amin'ny fijery mivaingana.
Lazao amin'ny ROWID ary INCLUDINGNEWVALUES.
Apetaho ny SEQUENCE clause raha toa ka andrasana hisy fifangaroan'ny insert/direct-loads, ny famafana ary ny fanavaozana ny latabatra.
ihany SUM, COUNT, AVG, STDDEV, VARIANCE, MIN ary MAX dia tohana ho famelombelomana haingana.
COUNT(*) tsy maintsy voafaritra.
Ny fiasa mitambatra dia tsy maintsy miseho amin'ny ampahany ivelany indrindra amin'ny fitenenana. Izany hoe, aggregates toy ny AVG(AVG(x)) or AVG(x)+ AVG(x) tsy mahazo.
Ho an'ny fitambarana tsirairay toy ny AVG(expr), ny mifanitsy COUNT(expr) tsy maintsy manatrika. Oracle dia manoro izany SUM(expr) ho voafaritra.
If VARIANCE(expr) or STDDEV(expr) dia voafaritra, COUNT(expr) ary SUM(expr) tsy maintsy voafaritra. Oracle dia manoro izany SUM(expr *expr) ho voafaritra.
The SELECT Ny tsanganana ao amin'ny fangatahana famaritana dia tsy mety ho fomba fiteny sarotra misy tsanganana avy amin'ny tabilao fototra maro. Ny vahaolana azo atao amin'izany dia ny fampiasana fomba fijery mivaingana.
The SELECT tsy maintsy ahitana ny lisitra rehetra GROUPBY andry.
Ny fijery mivaingana dia tsy mifototra amin'ny latabatra lavitra iray na maromaro.
Raha mampiasa a CHAR karazana angon-drakitra ao amin'ny tsanganana sivana amin'ny diarin'ny fijery mivaingana, tsy maintsy mitovy ny fitambaran'ny toetran'ny tranokala master sy ny fijery mivaingana.
Raha manana ny iray amin'ireto manaraka ireto ny fomba fijery mivaingana, dia tsy tohana afa-tsy amin'ny fampidirana DML mahazatra sy entana mivantana ny famelombelomana haingana.
Fomba fijery mivaingana miaraka amin'ny MIN or MAX mitambatra
Fomba fijery mivaingana izay manana SUM(expr) fa tsia COUNT(expr)
Fijery mivaingana tsy misy COUNT(*)
Ny fomba fijery mivaingana toy izany dia antsoina hoe fomba fijery ara-nofo fotsiny.
Fomba fijery mivaingana miaraka amin'ny MAX or MIN dia azo havaozina haingana aorian'ny famafana na mifangaro DML fanambarana raha tsy misy a WHERE fepetra.
Ny famelombelomana haingana max/min aorian'ny famafana na DML mifangaro dia tsy mitovy fitondran-tena amin'ny tranga ampidirina ihany. Izy io dia mamafa sy mamerina ny sanda max/min ho an'ireo vondrona voakasik'izany. Mila mahafantatra ny fiantraikan'ny zava-bitany ianao.
Fijery mivaingana miaraka amin'ny fomba fijery voatonona na subqueries ao amin'ny FROM azo havaozina haingana ny fehezanteny raha azo atambatra tanteraka ny hevitra. Raha mila fanazavana momba izay fomba fijery hitambatra dia jereo Oracle Database SQL Language Reference.
Raha tsy misy fifandraisana ivelany dia mety manana safidy tsy misy dikany ianao ary miditra ao amin'ny WHERE fepetra.
Ny fomba fijery mitambatra mivaingana miaraka amin'ny atambatra ivelany dia azo havaozina haingana aorian'ny DML mahazatra sy ny entana mivantana, raha toa ka ny latabatra ivelany ihany no novaina. Ary koa, tsy maintsy misy teritery tsy manam-paharoa eo amin'ny tsanganana mitambatra amin'ny latabatra fidirana anatiny. Raha misy fifandraisana ivelany, ny fifandraisana rehetra dia tsy maintsy mifandray amin'ny ANDary tsy maintsy mampiasa ny fitoviana (=) mpandraharaha.
Ho an'ny fijery mivaingana miaraka amin'ny CUBE, ROLLUP, andiana fanakambanana, na fampifandraisana azy ireo, dia mihatra ireto fameperana manaraka ireto:
The SELECT Ny lisitra dia tokony ahitana fanavahana vondrona izay mety ho a GROUPING_ID miasa amin'ny rehetra GROUPBY fitenenana na GROUPING miasa iray ho an'ny tsirairay GROUPBY fitenenana. Ohatra, raha ny GROUPBY Ny fehezan-teny amin'ny fomba fijery mivaingana dia "GROUPBYCUBE(a, b)", avy eo ny SELECT ny lisitra dia tokony ahitana na "GROUPING_ID(a, b)Β»na Β«GROUPING(a)ANDGROUPING(b)Β» mba hamerenana haingana ny fomba fijery mivaingana.
GROUPBY tsy tokony hiteraka vondrona dika mitovy. Ohatra, "GROUP BY a, ROLLUP(a, b)"Tsy azo havaozina haingana satria miteraka vondrona duplicate"(a), (a, b), AND (a)".
5.3.8.7 Fameperana momba ny fanavaozana haingana amin'ny fomba fijery mivaingana miaraka amin'ny UNION ALL
Fomba fijery mivaingana miaraka amin'ny UNIONALL set operator manohana ny REFRESHFAST safidy raha mahafeno ireto fepetra manaraka ireto:
Ny fanontaniana mamaritra dia tsy maintsy manana ny UNIONALL mpandraharaha amin'ny ambaratonga ambony.
The UNIONALL Tsy azo ampidirina ao anatin'ny subquery ny operator, afa-tsy ny iray: Ny UNIONALL dia mety ho ao amin'ny subquery ao amin'ny FROM fehezanteny raha toa ka misy endrika ny fangatahana famaritana SELECT * FROM (jereo na subquery miaraka amin'ny UNIONALL) toy ny amin'ity ohatra manaraka ity:
CREATE VIEW view_with_unionall AS (SELECT c.rowid crid, c.cust_id, 2 umarker avy amin'ny mpanjifa c WHERE c.cust_last_name = 'Smith' UNION REHETRA SELECT c.rowid crid, c.cust_id, 3 umarker FROM mpanjifa c WHERE c.cust_last_name 'Jones'); MAMORONA VIEW MATERIALIZED unionall_inside_view_mv REFRESH FAST ON DEMAND AS SELECT * DE View_with_unionall;
Mariho fa ny fijery view_with_unionall mahafeno ny fepetra takiana amin'ny fanavaozana haingana.
Ny sakana fanontaniana tsirairay ao amin'ny UNIONALL Ny fangatahana dia tsy maintsy mahafeno ny fepetra takian'ny fomba fijery mivaingana azo havaozina haingana miaraka amin'ny fitambarana na fomba fijery mivaingana azo havaozina haingana miaraka amin'ny fitambarana.
Ny diarin'ny fijery mivaingana mifanaraka amin'izany dia tsy maintsy amboarina eo amin'ny latabatra araka izay takiana amin'ny karazana fijery mivaingana azo havaozina haingana.
Mariho fa ny Oracle Database dia mamela ny tranga manokana amin'ny fijerena latabatra tokana miaraka amin'ny fidirana raha tsy omena ny ROWID tsanganana dia tafiditra ao amin'ny SELECT lisitra ary ao amin'ny log de view materialized. Izany dia aseho amin'ny fanontaniana mamaritra ny fijery view_with_unionall.
The SELECT Ny lisitry ny fanontaniana tsirairay dia tsy maintsy misy a UNIONALL marker, ary ny UNIONALL Ny tsanganana dia tsy maintsy manana sanda isa na tady tsy miovaova miavaka amin'ny tsirairay UNIONALL sampana. Ankoatra izany, ny tsanganana marika dia tsy maintsy miseho amin'ny toerana ordinal mitovy amin'ny SELECT lisitry ny sakana fanontaniana tsirairay. Jereo"UNION ALL Marker sy Query RewriteΒ» Raha mila fanazavana fanampiny momba ny UNIONALL marika.
Ny endri-javatra sasany toy ny fikambanan'ny ivelany, ny fanontaniam-pijery mivaingana mitambatra fotsiny ary ny latabatra lavitra dia tsy tohanana ho an'ny fijery mivaingana amin'ny UNIONALL. Mariho anefa fa ny fomba fijery mivaingana ampiasaina amin'ny kopia, izay tsy ahitana fitambarana na fitambarana, dia azo havaozina haingana rehefa UNIONALL na latabatra lavitra no ampiasaina.
Tsy maintsy apetraka amin'ny 9.2.0 na ambony kokoa ny mari-pamantarana fanombohana mifanentana mba hamoronana fomba fijery mivaingana azo havaozina haingana miaraka amin'ny UNIONALL.
Tsy te hanafintohina ny mpankafy Oracle aho, fa raha jerena amin'ny lisitry ny fameperana azy ireo, dia toa tsy tamin'ny tranga ankapobeny no nanoratana ity mekanika ity, tamin'ny fampiasana karazana modely, fa tamin'ny Indiana an'arivony, izay nahazoan'ny rehetra fahafahana manoratra ny sampany avy, ary samy nanao izay azony natao izy. Ny fampiasana an'io mekanika io ho an'ny lojika tena izy dia toy ny mandeha amin'ny toeram-pitrandrahana. Afaka mahazo toeram-pitrandrahana ianao amin'ny fotoana rehetra amin'ny alΓ lan'ny fikapohana ny iray amin'ireo fameperana tsy mazava. Fanontaniana misaraka ihany koa ny fomba fiasan'izy io, saingy mihoatra ny sahan'ity lahatsoratra ity.
Microsoft SQLServer
Additional Requirements
Ho fanampin'ny safidy SET sy ny fepetra takian'ny asa voafaritra dia tsy maintsy fenoina ireto fepetra manaraka ireto:
Ny mpampiasa izay manatanteraka CREATE INDEX tsy maintsy ho tompon'ny fijery.
Rehefa mamorona ny index ianao, ny IGNORE_DUP_KEY ny safidy dia tsy maintsy apetraka amin'ny OFF (ny default).
Ny tabilao dia tsy maintsy ilazana anarana misy ampahany roa, tetika.tablename amin'ny famaritana ny fijery.
Ny fiasa voafaritry ny mpampiasa voalaza ao amin'ny fijery dia tsy maintsy noforonina amin'ny fampiasana ny WITH SCHEMABINDING safidy.
Izay asa voafaritry ny mpampiasa voalaza ao amin'ny fijery dia tsy maintsy asian-teny amin'ny anarana mizara roa, ..
Ny fananana fidirana angon-drakitra amin'ny fiasa voafaritry ny mpampiasa dia tsy maintsy NO SQL, ary ny fananana fidirana ivelany dia tsy maintsy NO.
Ny fiasan'ny fiteny mahazatra (CLR) dia mety hiseho amin'ny lisitry ny fijery voafantina, saingy tsy mety ho anisan'ny famaritana ny fanalahidin'ny fanondroana mivondrona. Ny fiasan'ny CLR dia tsy afaka miseho ao amin'ny clause WHERE amin'ny fijery na ny fehezan-dalΓ na ON amin'ny asa JOIN amin'ny fijery.
Ny fiasa sy ny fomba fiasa CLR amin'ny karazana voafaritry ny mpampiasa CLR ampiasaina amin'ny famaritana fijery dia tsy maintsy manana ny fananana napetraka araka ny asehon'ity tabilao manaraka ity.
Property
Fanamarihana
DETERMINISTIC = MARINA
Tsy maintsy ambara mazava ho toetran'ny fomba fiasa Microsoft .NET Framework.
DATA ACCESS = TSY SQL
Tapa-kevitra amin'ny fametrahana ny toetra DataAccess amin'ny DataAccessKind.None sy ny toetra SystemDataAccess amin'ny SystemDataAccessKind.None.
FIdirana ivelany = TSIA
Ity fananana ity dia TSIA ho an'ny mahazatra CLR.
Ny fomba fijery dia tsy maintsy noforonina amin'ny fampiasana ny WITH SCHEMABINDING safidy.
Ny fijerena dia tsy maintsy manondro tabilao fototra izay ao amin'ny angon-drakitra mitovy amin'ny fijery. Ny fijery dia tsy afaka manondro hevitra hafa.
Ny fanambarana SELECT ao amin'ny famaritana fijery dia tsy tokony ahitana ireto singa Transact-SQL manaraka ireto:
1 Ny fijery voarakitra dia mety ahitana float tsanganana; na izany aza, ny tsanganana toy izany dia tsy azo ampidirina amin'ny fanalahidin'ny fanondroana mivondrona.
If GROUP BY misy, tsy maintsy misy ny famaritana VIEW COUNT_BIG(*) ary tsy tokony ahitana HAVING. Ireo GROUP BY ny fameperana dia tsy mihatra afa-tsy amin'ny famaritana fijery voarakitra. Ny fanontaniana iray dia afaka mampiasa fomba fijery indexed amin'ny drafitra fanatanterahana azy na dia tsy mahafeno ireo fepetra ireo aza GROUP BY fameperana.
Raha misy famaritana ny fijery misy a GROUP BY clause, ny fanalahidin'ny fanondroana mivondrona tokana dia tsy afaka manondro afa-tsy ireo tsanganana voatondro ao amin'ny GROUP BY fepetra.
Miharihary eto fa tsy tafiditra ao anatinβizany ny Karana, satria nanapa-kevitra ny hanao izany araka ny teti-dratsiny izy ireo hoe βhanao kely izahay, fa tsaraβ. Izany hoe, betsaka kokoa ny vanja eny an-kianja, fa mangarahara kokoa ny toerana misy azy. Ny tena mahasosotra dia ity fetra ity:
Ny fijerena dia tsy maintsy manondro tabilao fototra izay ao amin'ny angon-drakitra mitovy amin'ny fijery. Ny fijery dia tsy afaka manondro hevitra hafa.
Amin'ny voambolanay dia midika izany fa tsy afaka miditra amin'ny asa mivaingana hafa ny asa iray. Izany dia manapaka ny ideolojia rehetra amin'ny tsimokaretina.
Ary koa, ity famerana ity (ary bebe kokoa amin'ny lahatsoratra) dia mampihena be ny tranga fampiasana:
Ny fanambarana SELECT ao amin'ny famaritana fijery dia tsy tokony ahitana ireto singa Transact-SQL manaraka ireto:
Voarara ny fidirana ivelany, UNION, ORDER BY sy ny hafa. Mety ho mora kokoa ny mamaritra izay azo ampiasaina fa tsy izay tsy azo ampiasaina. Mety ho fohy kokoa ny lisitra.
Raha fintinina: fameperana goavana amin'ny tsirairay (aoka ho marihina ara-barotra) DBMS vs tsy misy (ankoatra ny lojika iray, tsy ara-teknika) amin'ny teknolojia LGPL. Na izany aza, tokony ho marihina fa ny fampiharana io mekanika io amin'ny lojika mifandray dia somary sarotra kokoa noho ny amin'ny lojika fiasa voalaza.
fanatanterahana
Ahoana ny fandehany? PostgreSQL dia ampiasaina ho "milina virtoaly". Misy algorithm sarotra ao anatiny izay manangana fanontaniana. Eto Source. Ary tsy misy andiana heuristika be dia be miaraka amin'ny andian-ifs. Noho izany, raha manana roa volana hianarana ianao dia afaka manandrana mahazo ny maritrano.
Miasa tsara ve izany? Tena mandaitra. Indrisy anefa fa sarotra ny manaporofo izany. Tsy afaka milaza aho fa raha mandinika ireo fanontaniana an'arivony misy amin'ny rindranasa lehibe ianao, dia amin'ny ankapobeny dia mahomby kokoa noho ny an'ny mpamorona mahay izy ireo. Ny programmer SQL mahay dia afaka manoratra fanontaniana amin'ny fomba mahomby kokoa, saingy amin'ny fanontaniana an'arivony dia tsy hanana antony manosika na fotoana hanaovana izany izy. Ny hany azoko lazaina izao ho porofon'ny fahombiazana dia ny fisian'ny tetikasa maromaro miasa amin'ny sehatra natsangana amin'ity DBMS ity. rafitra ERP, izay manana fiasa MATERIALIZED an'arivony samihafa, miaraka amin'ny mpampiasa an'arivony sy angon-drakitra terabyte miaraka amin'ny firaketana an-jatony tapitrisa mandeha amin'ny mpizara roa-processor mahazatra. Na izany aza, na iza na iza dia afaka manamarina/mandΓ ny fahombiazan'ny fampidinana sehatra ary PostgreSQL, mihodina miditra amin'ny fangatahana SQL ary manandrana manova ny lojika sy ny angona ao.
Ao amin'ny lahatsoratra manaraka dia hiresaka momba ny fomba ahafahanao mametraka fameperana amin'ny fiasa, miasa amin'ny fotoam-piovana fanovana, sy ny maro hafa.