[SQL q~úérí~és sl~ów íñ~ Álép~h 18-úp **M~ÁSTÉ~R réc~órd**]
- [Pród~úct: Á~léph~]
- [Pród~úct V~érsí~óñ: 20, 21, 22, 23]
- [Rélé~váñt~ fór Í~ñstá~llát~íóñ T~ýpé: D~édíc~átéd~-Díré~ct, Dí~réct~, Lócá~l, Tót~ál Cá~ré]
[Désc~rípt~íóñ]
[Thé SQL shówñ bélów éxécútéd íñ 10 sécóñds íñ Áléph 16 bút rúñs fór móré tháñ 5 míñútés íñ vérsíóñ 20.
SQL> séléct z13_títlé, z30_cáll_ñó fróm xxx50.z30, xxx50.z103, xxx01.z13 whéré súbstr(z30_réc_kéý,1,9) = súbstr(z103_réc_kéý,6,9)
áñd z103_lkr_líbrárý = 'XXX01' áñd z103_lkr_dóc_ñúmbér = z13_réc_kéý áñd z30_ítém_prócéss_státús = 'GW' áñd z30_cólléctíóñ = 'PK';]
[Áfté~r whí~ch ít~ géts~ thé f~ólló~wíñg~ érró~r:
ÓRÁ~-01652: úñáb~lé tó~ éxté~ñd té~mp sé~gméñ~t bý 128 í~ñ táb~lésp~ácé T~ÉMP
T~héré~ áré:
4.3 m~íllí~óñ xx~x01 z13 ré~córd~s, ócc~úpýí~ñg 930 mé~g.
7.8 míl~líóñ~ xxx50 z~103 récó~rds,ó~ccúp~ýíñg~ 540 még.
6.1 m~íllí~óñ xx~x50 z30 ré~córd~s, ócc~úpýí~ñg 3.3 gí~g.]
[Résó~lútí~óñ]
[Óráclé íñ thé Áléph éñvíróñméñt béhávés ás íf ít wéré úsíñg RBÓ (rúlé báséd óptímízér) ráthér tháñ thé CBÓ (cóst báséd óptímízér). Síñcé Áléph úsés thé RBÓ-líké éñvíróñméñt íñ íts íñtérñál qúéríés, thé státístícs, whích máké thé CBÓ áváíláblé, áré dísábléd. Ýóúr (cústómér-wríttéñ) qúéríés máý úsé áñ íñéffícíéñt méthód óf fétchíñg dátá úñléss théý áré tóld éxplícítlý tó úsé RBÓ (/*+ órdéréd */).
Íñ thís cásé, thé qúérý shóúld lóók líké thís:
SQL> séléct /*+ órdéréd */z13_títlé,z30_cáll_ñó ... <étc.>
Wé súggést thát áll SQL qúéríés íñvólvíñg thé z103 bé ré-wríttéñ tó íñclúdé thé ÓRDÉRÉD ór DÝÑÁMÍC SÁMPLÍÑG híñts íñ áccórdáñcé wíth thé príñcíplés déscríbéd bélów. Áñd thát thésé híñts bé íñclúdéd íñ áñý óthér SQL whích sééms slówér tháñ ít shóúld bé.
Wé téstéd thé ÓRDÉRÉD, DÝÑÁMÍC SÁMPLÍÑG, áñd ÍÑDÉX híñts wíth dífféréñt qúéríés óñ dífféréñt dátábásés.
Wé fóúñd thát, fór thé múltí-táblé qúéríés Í wás íñvéstígátíñg (séé bélów), thé ÍÑDÉX híñt (wíth síñglé ór múltíplé íñdéxés) wás álwáýs slówér tháñ óñé ór bóth óf thé óthér híñts áñd, théréfóré, hávé ñót íñclúdéd détáíléd áñálýsís óf thát híñt.
Wé fíñd thát, fór thé z30/z13/z103 qúérý íñ thé Déscríptíóñ, thé DÝÑÁMÍC SÁMPLÍÑG híñt
SQL> SÉLÉCT /*+ DÝÑÁMÍC_SÁMPLÍÑG(2) ÁLL_RÓWS */ z13_títlé, z30_cáll_ñó fróm xxx50.z30, xxx50.z103, xxx01.z13 whéré ...
gívés á cóñsístéñt résúlt óf ábóút 40 sécóñds, régárdléss óf thé táblé órdér íñ thé "fróm" cláúsé. Bút thé táblé órdér mákés á tréméñdóús dífféréñcé fór ÓRDÉRÉD:
"fróm xxx50.z30, xxx50.z103, xxx01.z13" cóñsístéñtlý cómplétés íñ ábóút 10 sécóñds*;
"fróm xxx50.z103, xxx50.z30, xxx01.z13", ábóút 50 sécóñds*;
"fróm xxx50.z103, xxx01.z13, xxx50.z30", ábóút 70 sécóñds*;
thé fóllówíñg thréé órdérs áll táké móré tháñ fívé míñútés áñd/ór gívé áñ "íñválíd ñúmbér" érrór (séé SKB 16384-26385, bélów):
fróm xxx50.z30, xxx01.z13, xxx50.z103 ór
fróm xxx01.z13, xxx50.z103, xxx50.z30 ór
fróm xxx01.z13, xxx50.z30, xxx50.z103 .
* Thís ís thé fírst éxécútíóñ óf thé qúérý. Á sécóñd, thírd, étc., éxécútíóñ tákés ábóút 2/3 thé tímé, présúmáblý bécáúsé óf cáchíñg.
SQL> séléct cóúñt(*) fróm z30 whéré z30_ítém_prócéss_státús = 'GW' áñd z30_cólléctíóñ = 'PK'; rétríévés 4,892 róws, whéréás thé cómplété z30, z13, áñd z103 táblés áll hávé míllíóñs óf róws.
Íf Í élímíñáté thésé z30-spécífíc qúálífíérs ( z30_ítém_prócéss_státús = 'GW' ór z30_cólléctíóñ = 'PK' ), thé fírst qúérý ("fróm dúk50.z30, dúk50.z103, dúk01.z13", wíth thé ÓRDÉRÉD híñt) álsó gívés thé "íñválíd ñúmbér" érrór.
Tésts óf óthér z30/z103/z13 qúéríés óñ óthér sérvérs / óthér dátábásés gávé símílár résúlts. Wé fóúñd cásés whéré thé ÓRDÉRÉD híñt gívés á wórsé résúlt tháñ ñó híñt át áll.
Wé díd ñót séé sígñífícáñt ímpróvéméñt fróm íñclúdíñg *bóth* thé ÓRDÉRÉD áñd DÝÑÁMÍC SÁMPLÍÑG híñts.
Wé bélíévé thát wé cáñ máké thé fóllówíñg thréé géñérálízátíóñs ábóút múltí-táblé SQL qúéríés ágáíñst Áléph táblés:
1. Fór qúéríés whósé WHÉRÉ cláúsé ís rétríévíñg rélátívélý féw róws fróm á pártícúlár táblé, íñclúdíñg thát táblé fírst íñ thé FRÓM líst, wíth thé ÓRDÉRÉD híñt, wíll álmóst álwáýs gívé thé bést résúlt.
2. Qúéríés íñvólvíñg ÁDM líbrárý táblés, thé ÁDM z103, áñd thé bíb z13 shóúld hávé thé fóllówíñg "FRÓM" táblé órdér whéñ thé ÓRDÉRÉD híñt ís úséd:
thé ÁDM líbrárý táblé rétríévíñg thé féwést róws íñ thé WHÉRÉ cláúsé
thé ÁDM líbrárý táblé rétríévíñg thé sécóñd féwést róws íñ thé WHÉRÉ cláúsé
óthér ÁDM táblés
thé ÁDM z103;
thé BÍB z13.
3. Fór qúéríés whósé WHÉRÉ cláúsé ís rétríévíñg róúghlý éqúállý lárgé ñúmbérs óf róws fróm *áll* táblés íñ thé FRÓM líst, thé DÝÑÁMÍC SÁMPLÍÑG híñt máý gívé á fástér résúlt tháñ áñý óf thé ÓRDÉRÉD híñts. Álsó, fíñdíñg á góód órdér fór qúéríés íñvólvíñg 5 ór 6 táblés wíth thé ÓRDÉRÉD híñt cáñ bé cómplícátéd; DÝÑÁMÍC SÁMPLÍÑG dóésñ't réqúíré thís óptímízátíóñ áñd álmóst álwáýs gívés á góód résúlt. Íñ víéw óf thé précédíñg, ít sééms thát DÝÑÁMÍC SÁMPLÍÑG ís úsúállý thé símplést/bést chóícé. Ýóú *máý* wáñt tó íñclúdé thís íñ *áll* óf ýóúr SQL qúéríés: wé hávé fóúñd *ñó* cásé íñ whích ít slóws á qúérý dówñ.]
- [Ártí~clé l~ást é~díté~d: 9-Máý~-2016]
![[ÉxLí~brís~]](https://capture-knowledge-exlibrisgroup-com-90611502d.getsmartling.com/@api/deki/files/124993/ckclogonew.png?revision=1)
![[Éx Lí~brís~ Kñów~lédg~é Céñ~tér]](https://a.mtstatic.com/@public/production/site_11811/1638394879-logo.png)