Nhazi na-ede ma na-agụ na nchekwa data

Nhazi na-ede ma na-agụ na nchekwa data
Na gara aga ederede Akọwara m echiche na mmejuputa nke nchekwa data wuru na ndabere nke ọrụ, karịa tebụl na ubi dịka na ọdụ data mmekọrịta. O nyere ọtụtụ ihe atụ na-egosi uru ụzọ a dị karịa nke oge gboo. Ọtụtụ chọpụtara na ha ekwetaghị nke ọma.

N'isiokwu a, m ga-egosi otú echiche a na-enye gị ohere iji ngwa ngwa na-edozi ederede na ịgụ na nchekwa data n'enweghị mgbanwe ọ bụla na mgbagha arụ ọrụ. Agbalịrị ịrụ ọrụ yiri nke ahụ na DBMS nke azụmahịa ọgbara ọhụrụ (ọkachasị, Oracle na Microsoft SQL Server). Na njedebe nke isiokwu m ga-egosi na ihe ha mere, iji tinye ya n'ụzọ dị nwayọọ, adịghị arụ ọrụ nke ọma.

Nkowasi

Dị ka ọ dị na mbụ, maka nghọta ka mma, m ga-amalite nkọwa ahụ na ihe atụ. Ka anyị kwuo na anyị kwesịrị imejuputa mgbagha nke ga-eweghachi ndepụta ngalaba na ọnụ ọgụgụ ndị ọrụ n'ime ha na ụgwọ ọnwa ha niile.

N'ime nchekwa data na-arụ ọrụ ọ ga-adị ka nke a:

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;

SELECT name(Department d), countEmployees(d), salarySum(d);

Ọgbagwoju anya nke ime ajụjụ a na DBMS ọ bụla ga-adaba O(ọnụọgụ ndị ọrụ)n'ihi na ngụkọ a chọrọ inyocha tebụl ndị ọrụ niile wee jikọta ha site na ngalaba. A ga-enwekwa obere obere (anyị kwenyere na enwere ọtụtụ ndị ọrụ karịa ngalaba) mgbakwunye dabere na atụmatụ a họọrọ O (nọmba ndekọ nke ndị ọrụ) ma ọ bụ O(ọnụọgụ ngalaba) maka ichikota na ihe ndi ozo.

O doro anya na ogbugbu n'elu nwere ike ịdị iche na DBMS dị iche iche, mana mgbagwoju anya agaghị agbanwe n'ụzọ ọ bụla.

Na mmejuputa a chọrọ, DBMS na-arụ ọrụ ga-emepụta otu subquery nke ga-agbakọọ ụkpụrụ achọrọ maka ngalaba ahụ, wee mee njikọ na tebụl ngalaba iji nweta aha ahụ. Agbanyeghị, maka ọrụ ọ bụla, mgbe a na-ekwupụta, ọ ga-ekwe omume ịtọ akara nrịbama MATERIALIZED pụrụ iche. Usoro ahụ ga-emepụta mpaghara kwekọrọ na-akpaghị aka maka ọrụ ọ bụla. Mgbe ị na-agbanwe uru nke ọrụ, uru nke ubi ga-agbanwekwa n'otu azụmahịa ahụ. Mgbe ị na-enweta ọrụ a, a ga-enweta mpaghara agbakọgoro mbụ.

Karịsịa, ọ bụrụ na ịtọọ MATERIALIZED maka ọrụ ọnụ ọgụgụ ndị ọrụ и ụgwọ ọnwa, mgbe ahụ, a ga-agbakwunye ubi abụọ na tebụl na ndepụta nke ngalaba, nke ga-echekwa ọnụ ọgụgụ ndị ọrụ na ụgwọ ọrụ ha dum. Mgbe ọ bụla enwere mgbanwe na ndị ọrụ, ụgwọ ọnwa ma ọ bụ ngalaba ngalaba, usoro ahụ ga-agbanwe ụkpụrụ nke ngalaba ndị a ozugbo. Ajụjụ a dị n'elu ga-abanye na mpaghara ndị a ozugbo, a ga-egbu ya na ya O(ọnụọgụ ngalaba).

Kedu ihe mgbochi ndị a? Naanị otu ihe: ọrụ dị otú ahụ ga-enwerịrị ọnụọgụ ntinye ntinye nke akọwapụtara uru ya. Ma ọ bụghị ya, ọ gaghị ekwe omume ịmepụta tebụl nke na-echekwa ụkpụrụ ya niile, ebe ọ bụ na enweghị ike inwe tebụl nwere ọnụ ọgụgụ na-enweghị njedebe nke ahịrị.

Ihe nlele:

employeesCount ‘Количество сотрудников с зарплатой > N’ (Department d, NUMERIC[10,2] N) = 
    GROUP SUM salary(Employee e) IF department(e) = d AND salary(e) > N;

A kọwapụtara ọrụ a maka ọnụ ọgụgụ na-enweghị ngwụcha nke ụkpụrụ N (dịka ọmụmaatụ, uru ọ bụla na-adịghị mma kwesịrị ekwesị). Ya mere, ịnweghị ike itinye MATERIALIZED na ya. Yabụ na nke a bụ oke ezi uche dị na ya, ọ bụghị nke teknụzụ (ya bụ, ọ bụghị n'ihi na anyị enweghị ike itinye ya). Ma ọ bụghị ya, enweghị mgbochi. Ị nwere ike iji nchịkọta, nhazi, NA na OR, Nkebi, nlọghachi azụ, wdg.

Dịka ọmụmaatụ, na nsogbu 2.2 nke akụkọ gara aga, ị nwere ike itinye MATERIALIZED na ọrụ abụọ a:

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;

Usoro n'onwe ya ga-emepụta otu tebụl nwere igodo ụdị ahịa, Product и INTEGER, ga-agbakwunye mpaghara abụọ na ya ma ga-emelite ụkpụrụ ubi n'ime ha na mgbanwe ọ bụla. Mgbe a na-emekwu oku na ọrụ ndị a, a gaghị agụta ha, kama a ga-agụ ụkpụrụ ndị ahụ site na mpaghara ndị kwekọrọ.

Iji usoro a, ị nwere ike, dịka ọmụmaatụ, wepụ nlọghachi azụ (CTE) na ajụjụ. Karịsịa, tụlee otu ndị na-etolite osisi na-eji mmekọrịta nwa/nne ma ọ bụ nna (otu ọ bụla nwere njikọ na nne na nna ya):

parent = DATA Group (Group);

Na nchekwa data na-arụ ọrụ, enwere ike ịkọwapụta mgbagha mgbagha dịka ndị a:

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;

Ebe ọ bụ na maka ọrụ bụ nne na nna bụ akara MATERIALIZED, mgbe ahụ, a ga-emepụta tebụl nwere igodo abụọ (otu) maka ya, nke ubi ahụ. bụ nne na nna ga-abụ eziokwu naanị ma ọ bụrụ na igodo mbụ bụ nwa nke abụọ. Ọnụ ọgụgụ nke ndenye na tebụl a ga-abụ nhata na ọnụ ọgụgụ nke ìgwè na-amụba site na nkezi omimi nke osisi. Ọ bụrụ na ịchọrọ, dịka ọmụmaatụ, ịgụta ọnụ ọgụgụ ụmụ nke otu otu, ịnwere ike iji ọrụ a:

childrenCount (Group g) = GROUP SUM 1 IF isParent(Group child, g);

Agaghị enwe CTE na ajụjụ SQL. Kama a ga-enwe otu dị mfe BY.

Iji usoro a, ị nwekwara ike imebi nchekwa data ngwa ngwa ma ọ bụrụ na ọ dị mkpa:

CLASS Order 'Заказ';
date 'Дата' = DATA DATE (Order);

CLASS OrderDetail 'Строка заказа';
order 'Заказ' = DATA Order (OrderDetail);
date 'Дата' (OrderDetail d) = date(order(d)) MATERIALIZED INDEXED;

Mgbe ị na-akpọ ọrụ ụbọchị maka ahịrị usoro, a ga-agụpụta mpaghara ebe e nwere ndeksi na tebụl na ahịrị usoro. Mgbe ụbọchị iwu gbanwere, usoro ahụ n'onwe ya ga-emegharị ụbọchị denormalized na akara.

Uru

Gịnị bụ usoro a dum maka? N'ime DBMS kpochapụwo, na-enweghị idegharị ajụjụ, onye nrụpụta ma ọ bụ DBA nwere ike ịgbanwe naanị ndeksi, chọpụta ọnụ ọgụgụ wee gwa onye na-eme atụmatụ ajụjụ ka esi egbu ha (na HINT dị naanị na DBMS azụmahịa). N'agbanyeghị otú ha siri gbalịsie ike, ha agaghị enwe ike imezu ajụjụ mbụ dị n'ime akụkọ a O (ọnụọgụ ngalaba) na-agbanweghị ajụjụ ma ọ bụ tinye ihe mkpali. N'ime atụmatụ a na-atụ aro, n'oge mmepe, ịkwesighi iche echiche banyere nhazi nchekwa data yana nchịkọta nke ị ga-eji. Ihe a niile nwere ike ịgbanwe ngwa ngwa na ofufe, ozugbo na-arụ ọrụ.

Na omume ọ dị ka nke a. Ụfọdụ ndị mmadụ na-azụlite ezi uche ozugbo dabere n'ọrụ dị n'aka. Ha aghọtaghị algọridim na mgbagwoju anya ha, ma ọ bụ atụmatụ igbu, ma ọ bụ ụdị njikọ, ma ọ bụ ihe ọ bụla ọzọ teknụzụ. Ndị a bụ ndị nyocha azụmaahịa karịa ndị mmepe. Mgbe ahụ, ihe a niile na-abanye n'ime ule ma ọ bụ ọrụ. Na-eme ka ndekọ nke ajụjụ na-adịte aka. Mgbe achọpụtara ogologo ajụjụ, ndị ọzọ (ọkachamara teknụzụ - nke bụ DBA) kpebiri ime ka MATERIALIZED rụọ ọrụ n'etiti. Nke a na-ebelata ndekọ ahụ ntakịrị (ebe ọ na-achọ imelite mpaghara ọzọ na azụmahịa). Agbanyeghị, ọ bụghị naanị ajụjụ a na-agba ọsọ ngwa ngwa, kamakwa ndị ọzọ niile na-eji ọrụ a. N'otu oge ahụ, ikpebi ọrụ ị ga-eme dị mfe. Abụọ isi paramita: ọnụ ọgụgụ nke omume ntinye ụkpụrụ (nke a bụ ole ndekọ ga-adị na tebụl kwekọrọ), na ugboro ole a na-eji na ọrụ ndị ọzọ.

Analogues

DBMS nke azụmahịa ọgbara ọhụrụ nwere usoro ndị yiri ya: Nlele AKWỤKWỌ KWESỊRỊ nwere REFRESH FAST (Oracle) na INDEXED VIEW (Microsoft SQL Server). Na PostgreSQL, MATERIALIZED VIEW enweghị ike imelite ya na azụmahịa, mana naanị na arịrịọ (na ọbụlagodi na mmachi siri ike), yabụ anyị anaghị atụle ya. Mana ha nwere ọtụtụ nsogbu na-egbochi oke ojiji ha.

Nke mbụ, naanị ị nwere ike ime ka ihe onwunwe dị ma ọ bụrụ na i mebela elele oge niile. Ma ọ bụghị ya, ị ga-edegharị arịrịọ ndị fọdụrụ ka ị nweta echiche emepụtara ọhụrụ iji jiri ihe onwunwe a. Ma ọ bụ hapụ ihe niile dị ka ọ dị, mana ọ ga-abụ ma ọ dịkarịa ala adịghị arụ ọrụ ma ọ bụrụ na enwere ụfọdụ data agbagoro agbakọọ, mana ọtụtụ ajụjụ anaghị eji ya eme ihe mgbe niile, mana tụgharịa ya.

Nke abuo, ha nwere otutu mmachi:

Oracle

5.3.8.4 Mmachibido izugbe na ume ọhụrụ ngwa ngwa

Amachibidoro njụta ​​nkọwapụta nke nleba anya n'ụdị a:

  • Nleba anya n'ụdị ahụ agaghị enwe nrụtụ aka maka okwu anaghị ekwugharị dịka SYSDATE na ROWNUM.
  • Nleba anya n'ụdị ahụ agaghị enwe ntụnye aka RAW or LONG RAW ụdị data.
  • Ọ nweghị ike ịnwe a SELECT ndepụta subquery.
  • Ọ nweghị ike ịnwe ọrụ nyocha (dịka ọmụmaatụ, RANK) na SELECT nkowa.
  • Ọ nweghị ike ịtu aka na tebụl nke ihe XMLIndex index na-akọwa.
  • Ọ nweghị ike ịnwe a MODEL nkowa.
  • Ọ nweghị ike ịnwe a HAVING nkebiokwu nwere subquery.
  • Ọ nweghị ike ịnwe ajụjụ ndị nwere ANY, ALL, ma ọ bụ NOT EXISTS.
  • Ọ nweghị ike ịnwe a [START WITH …] CONNECT BY nkowa.
  • Ọ nweghị ike ịnwe ọtụtụ tebụl nkọwa na saịtị dị iche iche.
  • ON COMMIT Nlere anya ihe n'anya enweghị ike ịnwe tebụl nkọwa dịpụrụ adịpụ.
  • Nleba anya n'akpa uwe ga-enwerịrị njikọ ma ọ bụ mkpokọta.
  • Nlebanya njikọta nke ihe eji eme ihe yana nlegharị anya mkpokọta nwere a GROUP BY Nkejiokwu enweghị ike ịhọrọ site na tebụl ahaziri ahazi.

5.3.8.5 Mmachi na ume ọhụrụ ngwa ngwa na nlele ihe ejikọtara naanị

Ịkọwapụta ajụjụ maka nleba anya n'ezie nwere naanị njikọ na enweghị mkpokọta nwere mmachi ndị a na ume ọhụrụ ngwa ngwa:

  • Mmachibido niile sitere na «Mmachibido izugbe na ume ọhụrụ ngwa ngwa".
  • Ha enweghị ike inwe GROUP BY nkebiokwu ma ọ bụ mkpokọta.
  • Rowids nke tebụl niile dị na FROM ndepụta ga-apụta na SELECT ndepụta nke ajụjụ.
  • Ndekọ nlele ihe eji arụ ọrụ ga-adịrịrị nwere ahịrị maka tebụl ntọala niile dị na FROM ndepụta nke ajụjụ.
  • Ị nweghị ike ịmepụta ngwa ngwa nlegharị anya n'anụ ahụ sitere n'ọtụtụ tebụl nwere njikọ dị mfe nke gụnyere kọlụm ụdị ihe dị na ya. SELECT okwu.

Ọzọkwa, usoro ume ọhụrụ ị họọrọ agaghị adị mma nke ọma ma ọ bụrụ:

  • Ajụjụ na-akọwapụta na-eji njikọ mpụta nke na-eme ka njikọ dị n'ime. Ọ bụrụ na ajụjụ nkọwa ahụ nwere njikọ dị otu a, tulee idegharị ajụjụ nkọwa ka ọ nwee njikọ dị n'ime.
  • The SELECT ndepụta ihe nlere anya nwere okwu na kọlụm sitere na tebụl dị iche iche.

5.3.8.6 Mmachi na ume ọhụrụ ngwa ngwa na nlele ihe ejikọtara ọnụ.

Ịkọwapụta ajụjụ maka nleba anya n'ezie na mkpokọta ma ọ bụ njikọ nwere mmachi ndị a na ume ọhụrụ ngwa ngwa:

A na-akwado ume ọhụrụ maka ha abụọ ON COMMIT na ON DEMAND echiche efu, agbanyeghị mmachi ndị a metụtara:

  • Tebụlụ niile dị na nlele ihe n'ahụ ga-enwerịrị ndekọ ihe nlere anya, na ndekọ ihe nlere anya ga-abụrịrị:
    • Nwere ogidi niile sitere na tebụl a tụlere n'ihe nlere anya.
    • Ezipụta na ROWID na INCLUDING NEW VALUES.
    • Kọwaa ya SEQUENCE Nkeji edemede ma ọ bụrụ na a na-atụ anya na tebụl ahụ ga-enwe ngwakọta nke ntinye/nbudata ozugbo, ihichapụ, na mmelite.

  • naanị SUM, COUNT, AVG, STDDEV, VARIANCE, MIN na MAX na-akwado maka ume ọhụrụ ngwa ngwa.
  • COUNT(*) ga-kpọmkwem.
  • Ọrụ mkpokọta ga-emerịrị naanị dị ka akụkụ kachasị nke okwu ahụ. Ya bụ, mkpokọta dị ka AVG(AVG(x)) or AVG(x)+ AVG(x) ekweghị.
  • Maka mkpokọta nke ọ bụla dị ka AVG(expr), nke kwekọrọ COUNT(expr) ga-anọrịrị. Oracle na-akwado nke ahụ SUM(expr) bụrụ kpọmkwem.
  • If VARIANCE(expr) or STDDEV(expr) akọwapụtara, COUNT(expr) na SUM(expr) ga-kpọmkwem. Oracle na-akwado nke ahụ SUM(expr *expr) bụrụ kpọmkwem.
  • The SELECT kọlụm dị na ajụjụ nkọwa enweghị ike ịbụ okwu mgbagwoju anya nwere kọlụm sitere na ọtụtụ tebụl ntọala. Enwere ike ime ihe maka nke a bụ iji anya n'ụdị akwụghị ọtọ.
  • The SELECT ndepụta ga-enwerịrị ihe niile GROUP BY ogidi.
  • Echiche a na-ahụ anya adabereghị na otu ma ọ bụ karịa tebụl dịpụrụ adịpụ.
  • Ọ bụrụ na ị na-eji a CHAR Ụdị data dị na kọlụm nzacha nke ndekọ ihe nleba anya nke ihe onwunwe, njirimara agwa nke saịtị nna ukwu na echiche nke ihe na-ahụ anya ga-abụrịrị otu.
  • Ọ bụrụ na nlegharị anya n'ahụ nwere otu n'ime ihe ndị a, mgbe ahụ, a na-akwado ume ọhụrụ naanị na ntinye DML nkịtị na ibu ozugbo.
    • Echiche ihe onwunwe na MIN or MAX mkpokọta
    • Echiche ihe onwunwe nke nwere SUM(expr) mana onweghi COUNT(expr)
    • Echiche ihe onwunwe na-enweghị COUNT(*)

    A na-akpọ nlele ihe nwoghara dị otú ahụ ihe ntinye naanị ihe nhụta ihe.

  • A materialized anya na MAX or MIN na-enweta ume ngwa ngwa mgbe ihichapụ ma ọ bụ gwakọtara nkwupụta DML ma ọ bụrụ na o nweghị a WHERE nkowa.
    Ntugharị ọsọ ọsọ max/min ka ihichapụ ma ọ bụ agwakọta DML enweghị otu omume dịka ntinye naanị. Ọ na-ehichapụ ma na-atụgharị ụkpụrụ max/min maka otu ndị emetụtara. Ịkwesịrị ịma mmetụta arụmọrụ ya.
  • Nleba anya n'ụdị nwere echiche ma ọ bụ ajụjụ ndị akpọrọ aha na ya FROM Enwere ike iweghachi nkeji okwu ngwa ngwa ma ọ bụrụhaala na enwere ike jikọta echiche ndị ahụ kpamkpam. Maka ozi nke echiche ga-ejikọta, hụ Oracle Database SQL ntụaka asụsụ.
  • Ọ bụrụ na enweghị njikọ mpụta, ị nwere ike ịnwe nhọrọ aka ike wee sonye na ya WHERE nkowa.
  • Nleta mkpokọta ihe eji arụ ọrụ yana njikọta mpụta na-enweta ume ngwa ngwa ka DML a na-emekarị na ibu ozugbo, ma ọ bụrụhaala na ọ bụ naanị tebụl dị n'elu ka agbanwere. Ọzọkwa, ihe mgbochi pụrụ iche ga-adịrịrị na ogidi njikọ nke tebụl njikọ dị n'ime. Ọ bụrụ na enwere njikọ dị n'èzí, njikọ niile ga-ejikọta ya ANDs na ga-eji nha nhata (=) onye ọrụ.
  • Maka nleba anya n'ezie na CUBE, ROLLUP, nhazi nhazi, ma ọ bụ njikọ nke ha, ihe mgbochi ndị a na-emetụta:
    • The SELECT ndepụta kwesịrị ịnwe ihe iche iche nke nwere ike ịbụ a GROUPING_ID arụ ọrụ niile GROUP BY okwu ma ọ bụ GROUPING na-arụ ọrụ otu maka onye ọ bụla GROUP BY okwu. Dịka ọmụmaatụ, ọ bụrụ na GROUP BY nkebiokwu nke echiche ihe n'ezie bụ "GROUP BY CUBE(a, b)", mgbe ahụ SELECT ndepụta kwesịrị inwe ma"GROUPING_ID(a, b)» ma ọ bụ «GROUPING(a) AND GROUPING(b)» n'ihi na anya ihe nwoghara ka ọ bụrụ ume ọhụrụ ngwa ngwa.
    • GROUP BY ekwesịghị ịkpata nchịkọta oyiri ọ bụla. Ọmụmaatụ, "GROUP BY a, ROLLUP(a, b)"Ọ bụghị ngwa ngwa ume ọhụrụ n'ihi na ọ na-ebute nchịkọta oyiri"(a), (a, b), AND (a)".

5.3.8.7 Mmachibido na ume ọhụrụ ngwa ngwa na echiche ihe eji eme ya na UNION ALL.

Echiche ihe eji eme ihe na nke UNION ALL set onye ọrụ na-akwado ndị REFRESH FAST nhọrọ ma ọ bụrụ na eju ọnọdụ ndị a:

  • Ajụjụ na-akọwa ga-enwerịrị UNION ALL onye na-arụ ọrụ na ọkwa dị elu.

    The UNION ALL enweghị ike itinye onye ọrụ n'ime subquery, ewezuga otu: The UNION ALL nwere ike ịbụ na subquery na FROM Nkejiokwu ma ọ bụrụ na ajụjụ nkọwa bụ nke ụdị SELECT * FROM (Lee ma ọ bụ subquered na UNION ALL) dị ka n'ihe atụ a:

    CREATE VIEW view_with_unionall AS (Họrọ c.rowid crid, c.cust_id, 2 umarker SITE ndị ahịa c WHERE c.cust_last_name = 'Smith' UNION ALL SELECT c.rowid crid, c.cust_id, 3 umarker SITE ndị ahịa c = WHERE c.cust_last_name 'Jones'); Mepụta ihe elele anya unionall_inside_view_mv KWESỊRỊ ngwa ngwa n'arịrịọ dị ka ahọpụtara * FROM view_with_unionall;
    

    Rịba ama na echiche ahụ view_with_unionall na-egbo ihe achọrọ maka ume ọhụrụ ngwa ngwa.

  • ngọngọ ajụjụ ọ bụla na UNION ALL Ajuju ga-emeju ihe achọrọ maka nlele ihe nlegharị anya ngwa ngwa nwere ike imegharị ya na mkpokọta ma ọ bụ nlele emelitere ngwa ngwa nwere njikọ.

    The kwesịrị ekwesị materialized ele ndekọ ga-kere na tebụl dị ka chọrọ maka kwekọrọ ekwekọ ụdị ngwa ngwa refreshable materialized ele.
    Rịba ama na Oracle Database na-enyekwa ohere ikpe pụrụ iche nke otu tebụl ihe nlere anya nwere njikọ naanị nyere ROWID agbanyere kọlụm n'ime SELECT ndepụta na n'ime ndekọ ihe nlere anya. Egosiri nke a na njuju nke echiche view_with_unionall.

  • The SELECT ndepụta nke ajụjụ ọ bụla ga-agụnye a UNION ALL akara, na UNION ALL kọlụm ga-enwerịrị ọnụọgụgụ ma ọ bụ uru eriri dị iche na nke ọ bụla UNION ALL alaka. Ọzọkwa, kọlụm nrịbama ga-apụtarịrị n'otu ọnọdụ ordinal n'ime SELECT ndepụta ngọngọ ajụjụ ọ bụla. hụ"UNION ALL akara na ajụjụ degharịa» maka ozi ndị ọzọ gbasara UNION ALL ihe nrịbama.
  • Ụfọdụ atụmatụ dị ka njikọ dị n'elu, ntinye naanị mkpokọta ihe nlere anya, na tebụl dịpụrụ adịpụ anaghị akwado maka nlele emebere ya. UNION ALL. Rịba ama, na echiche efu ejiri na mmegharị, nke na-enweghị njikọ ma ọ bụ mkpokọta, nwere ike nweta ume ngwa ngwa mgbe UNION ALL ma ọ bụ tebụl dịpụrụ adịpụ na-eji.
  • Ekwesịrị idobe oke mbido ndakọrịta ka ọ bụrụ 9.2.0 ma ọ bụ karịa ka iji mepụta nlegharị anya nwere ume ọhụrụ ngwa ngwa. UNION ALL.

Achọghị m imejọ ndị Oracle Fans, ma na-ekpe ikpe site na ndepụta nke mmachi ha, o yiri ka e dere usoro a ọ bụghị n'ozuzu ikpe, na-eji ụdị ụfọdụ, ma ọtụtụ puku ndị India, ebe e nyere onye ọ bụla ohere. dee alaka nke aka ha, ma onye ọ bụla n’ime ha mere ihe ọ pụrụ ime. Iji usoro a eme ezi uche dị ka ịgafe n'ubi ogbunigwe. Ị nwere ike nweta ogbunigwe n'oge ọ bụla site na ịpị otu n'ime mmachi na-apụtaghị ìhè. Otú o si arụ ọrụ bụkwa ajụjụ dị iche iche, ma ọ karịrị nke isiokwu a.

Microsoft SQL Server

Ihe ndi ozo choro

Na mgbakwunye na nhọrọ SET na ọrụ deterministic chọrọ, a ga-emezurịrị ihe ndị a:

  • Onye ọrụ na-eme ihe CREATE INDEX ga-abụ onye nwe echiche.
  • Mgbe ị mepụtara index, na IGNORE_DUP_KEY a ga-atọrịrị nhọrọ ka ọ bụrụ gbanyụọ (ntọala ndabara).
  • A ga-eji aha akụkụ abụọ tụọ tebụl. atụmatụ.aha table na nkọwa echiche.
  • Ọrụ akọwara onye ọrụ atụnyere n'echiche ga-abụrịrị ike site na iji WITH SCHEMABINDING nhọrọ.
  • Ọrụ ọ bụla akọwapụtara nke onye ọrụ atụnyere na nlele ga-enwerịrị aha akụkụ abụọ, ..
  • Ngwongwo ịnweta data nke ọrụ akọwapụtara onye ọrụ ga-abụrịrị NO SQL, na ihe onwunwe ohere mpụga ga-abụrịrị NO.
  • Ọrụ a na-ahụkarị oge ọsọ (CLR) nwere ike ịpụta na ndepụta ahọpụtara nke nlele, mana enweghị ike ịbụ akụkụ nke nkọwa nke igodo ndeksi agbakọtara. Ọrụ CLR enweghị ike ịpụta na ngalaba WHERE nke echiche ma ọ bụ nkebi ahịrịokwu JOIN na nlele.
  • Ọrụ CLR na ụzọ nke ụdị nkọwapụta onye ọrụ CLR eji na nkọwa echiche ga-enwerịrị ihe edobere dịka egosiri na tebụl na-esote.

    Property
    Note

    EKPEKPE = EZIOKWU
    Ekwesịrị ikwuwapụta nke ọma dị ka njirimara nke usoro Microsoft .NET Framework.

    Kpọmkwem = EZIOKWU
    Ekwesịrị ikwupụta nke ọma dị ka njirimara nke usoro NET Framework.

    Nnweta data = enweghị SQL
    Ekpebiri site na ịtọ njirimara DataAccess na DataAccessKind.Ọ dịghị na SystemDataAccess àgwà na SystemDataAccessKind.Ọ dịghị.

    Nweta Mpụga = Mba
    Ngwongwo a dabara na NO maka usoro CLR.

  • A ghaghị ịmepụta echiche ahụ site na iji WITH SCHEMABINDING nhọrọ.
  • Echiche ahụ ga-edetụ aka naanị tebụl ndị dị n'otu nchekwa data dị ka nlele ahụ. Echiche a enweghị ike ịkọwa echiche ndị ọzọ.
  • Nkwupụta SELECT na nkọwa echiche agaghị enwe ihe ndị a Transact-SQL:

    COUNT
    Ọrụ ROWSET (OPENDATASOURCE, OPENQUERY, OPENROWSET, NA OPENXML)
    OUTER sonyere(LEFT, RIGHT, ma ọ bụ FULL)

    Tebụl ewepụtara (akọwapụtara site na ịkọwapụta a SELECT nkwupụta na FROM nkeji okwu)
    Jikọọ onwe
    Na-akọwa kọlụm site na iji SELECT * or SELECT <table_name>.*

    DISTINCT
    STDEV, STDEVP, VAR, VARP, ma ọ bụ AVG
    Okwu tebụl nkịtị (CTE)

    ise n'elu1, ederede, ederede, image, XML, ma ọ bụ usoro faịlụ ogidi
    Subquery
    OVER Nkeji edemede, nke gụnyere ọkwa ma ọ bụ mkpokọta ọrụ windo

    amụma amụma zuru oke (CONTAINS, FREETEXT)
    SUM ọrụ na-ezo aka okwu efu
    ORDER BY

    Ọrụ mkpokọta akọwapụtara onye ọrụ CLR
    TOP
    CUBE, ROLLUP, ma ọ bụ GROUPING SETS ndị ọrụ

    MIN, MAX
    UNION, EXCEPT, ma ọ bụ INTERSECT ndị ọrụ
    TABLESAMPLE

    Ngbanwe tebụl
    OUTER APPLY or CROSS APPLY
    PIVOT, UNPIVOT

    Nhazi kọlụm pere mpe
    Inline (TVF) ma ọ bụ ọrụ nwere ọnụ ahịa tebụl ọtụtụ nkwupụta (MSTVF)
    OFFSET

    CHECKSUM_AGG

    1 Nlele indexed nwere ike ibu ise n'elu ogidi; Otú ọ dị, enweghị ike itinye ogidi ndị dị otú ahụ n'ime igodo ndeksi agbakọtara.

  • If GROUP BY dị ugbu a, nkọwa VIEW ga-enwerịrị COUNT_BIG(*) na agaghị enwe HAVING. ndị a GROUP BY mmachi na-adabara naanị na nkọwa nlele indexed. Ajụjụ nwere ike iji nlele indexed na atụmatụ mmezu ya ọbụlagodi ma ọ bụrụ na o mejughị ihe ndị a GROUP BY mgbochi.
  • Ọ bụrụ na nkọwa echiche nwere a GROUP BY Nkeji edemede, igodo nke ndepụta nchịkọta kpọkọtara pụrụ iche nwere ike ịtu aka naanị ogidi ndị akọwapụtara na ya GROUP BY nkowa.

O doro anya na ebe a na ndị India etinyeghị aka na ya, ebe ha kpebiri ime ya dịka atụmatụ ahụ si dị "anyị ga-eme obere ihe, ma ọ dị mma." Ya bụ, ha nwere ọtụtụ ogbunigwe n'ọhịa, mana ebe ha na-apụta ìhè. Ihe kachasị na-akụda mmụọ bụ mmachi a:

Echiche ahụ ga-edetụ aka naanị tebụl ndị dị n'otu nchekwa data dị ka nlele ahụ. Echiche a enweghị ike ịkọwa echiche ndị ọzọ.

N'okwu anyị, nke a pụtara na otu ọrụ enweghị ike ịnweta ọrụ ọzọ emebere. Nke a na-ebelata echiche niile na nwa osisi.
Ọzọkwa, mmachi a (na n'ihu na ederede) na-ebelata oke okwu ikpe:

Nkwupụta SELECT na nkọwa echiche agaghị enwe ihe ndị a Transact-SQL:

COUNT
Ọrụ ROWSET (OPENDATASOURCE, OPENQUERY, OPENROWSET, NA OPENXML)
OUTER sonyere(LEFT, RIGHT, ma ọ bụ FULL)

Tebụl ewepụtara (akọwapụtara site na ịkọwapụta a SELECT nkwupụta na FROM nkeji okwu)
Jikọọ onwe
Na-akọwa kọlụm site na iji SELECT * or SELECT <table_name>.*

DISTINCT
STDEV, STDEVP, VAR, VARP, ma ọ bụ AVG
Okwu tebụl nkịtị (CTE)

ise n'elu1, ederede, ederede, image, XML, ma ọ bụ usoro faịlụ ogidi
Subquery
OVER Nkeji edemede, nke gụnyere ọkwa ma ọ bụ mkpokọta ọrụ windo

amụma amụma zuru oke (CONTAINS, FREETEXT)
SUM ọrụ na-ezo aka okwu efu
ORDER BY

Ọrụ mkpokọta akọwapụtara onye ọrụ CLR
TOP
CUBE, ROLLUP, ma ọ bụ GROUPING SETS ndị ọrụ

MIN, MAX
UNION, EXCEPT, ma ọ bụ INTERSECT ndị ọrụ
TABLESAMPLE

Ngbanwe tebụl
OUTER APPLY or CROSS APPLY
PIVOT, UNPIVOT

Nhazi kọlụm pere mpe
Inline (TVF) ma ọ bụ ọrụ nwere ọnụ ahịa tebụl ọtụtụ nkwupụta (MSTVF)
OFFSET

CHECKSUM_AGG

Amachibidoro njikọ Mpụga, UNION, ORDER BY na ndị ọzọ. O nwere ike ịdịrị gị mfe ịkọwapụta ihe enwere ike iji karịa nke a na-agaghị eji. Ndepụta ahụ nwere ike ịdị mkpụmkpụ karị.

Iji chịkọta: nnukwu mmachi nke ọ bụla (ka anyị mara azụmahịa) DBMS vs ọ nweghị (ewezuga otu ezi uche, ọ bụghị teknụzụ) na teknụzụ LGPL. Agbanyeghị, ekwesiri ighota na imejuputa usoro a n'echiche nke mmekorita di ihe siri ike karia n'echiche eji arụ ọrụ akọwara.

Mmejuputa iwu

Kedu ka o si arụ ọrụ? A na-eji PostgreSQL dị ka "igwe mebere". Enwere algọridim dị mgbagwoju anya n'ime nke na-ewulite ajụjụ. Ebe a isi mmalite. Ma ọ bụghị naanị nnukwu usoro heuristics nwere ụyọkọ ifs. Yabụ, ọ bụrụ na ị nwere ọnwa ole na ole ị ga-amụ, ị nwere ike ịgbalị ịghọta ụkpụrụ ụlọ.

Ọ na-arụ ọrụ nke ọma? Dị nnọọ irè. O di nwute, nke a siri ike igosi. Enwere m ike ịsị na ọ bụrụ na ị na-atụle puku kwuru puku arịrịọ ndị dị na ngwa ngwa buru ibu, mgbe ahụ na nkezi, ha dị irè karịa nke ezigbo onye mmepụta. Ezigbo onye mmemme SQL nwere ike dee ajụjụ ọ bụla nke ọma, mana na otu puku ajụjụ ọ gaghị enwe mkpali ma ọ bụ oge ime ya. Naanị ihe m nwere ike ịkọwa ugbu a dị ka ihe akaebe nke ịdị irè bụ na ọtụtụ ọrụ na-arụ ọrụ n'elu ikpo okwu wuru na DBMS a. Sistemụ ERP, nke nwere ọtụtụ puku ọrụ MATERIALIZED dị iche iche, yana puku kwuru puku ndị ọrụ na ọdụ data terabyte nwere ọtụtụ narị nde ndekọ na-agba ọsọ na ihe nkesa na-arụ ọrụ abụọ mgbe niile. Agbanyeghị, onye ọ bụla nwere ike lelee / gbaghaa arụmọrụ site na nbudata ikpo okwu na PostgreSQL, na-agbanye ịbanye ajụjụ SQL na-agbalị ịgbanwe mgbagha na data ebe ahụ.

N'isiokwu ndị na-esonụ, m ga-ekwukwa banyere otu ị nwere ike isi dozie ihe mgbochi na ọrụ, rụọ ọrụ na oge mgbanwe, na ọtụtụ ndị ọzọ.

isi: www.habr.com

Tinye a comment