Er zijn overwegingen op het basisniveau van het krijgen van
SELECT-instructies om goed te presteren (indexen, joinvoorwaarden,
afhankelijk subquery's, enz.), en er zijn aanvullende overwegingen als
je "transactionele" queries (INSERT, UPDATE, DELETE). Buiten het bereik
van uw vraag, denk ik, zijn stored procedures en triggers. Het zou
helpen om een beter antwoord te posten als u het bereik van uw
interesse en iets over je achtergrond / ervaring met SQL programmering
verduidelijkt. hardmath 8 februari '11 om 16:45
Om gebruik te
maken van het uitvoeringsplan (dat is een beschrijving van hoe de
database van uw verzoek zal uitvoeren), moet men begrijpen welke opties
beschikbaar zijn om het (de database) en zich een oordeel over de vraag
of de keuze van het optimalisatieprogramma de juiste was. Dit vergt veel
kennis en ervaring.
Voor (1), ik moet beslissen of ik de
gegevens anders kan herstructureren zodat ik minder gegevens scannen.
Indexen zijn zelden van gebruik sinds ik ben geïnteresseerd in voldoende
grote subsets om geïndexeerde toegang langzamer dan een volledige tabel
scan te maken. Zo kan ik een horizontale deelverzameling van de
gegevens (laatste 30 dagen) of verticale subset van de data (10 kolommen
in plaats van 80) of een aggregaat van de gegevens. In beide gevallen
zal de grootte van de gegevens kan een toename verwerkingssnelheid
maken. Natuurlijk, als de gegevens slechts eenmaal wordt gebruikt, ik
heb net verhuisd het probleem elders.
Voor (2), begin ik meestal
door te controleren "Kardinaliteit" (num rijen) op de bovenste regel in
de xPlan. Als ik weet dat mijn query 5.000.000 rijen, maar het zegt 500,
kan ik er vrij zeker van dat de optimizer messed up ergens. Als de
totale kardinaliteit is in de juiste bal park, begin ik aan de andere
kant plaats en laat elke stap van het plan totdat ik de eerste grote
inschattingsfout vinden. Als de kardinaliteit is verkeerd, de
join-methode is waarschijnlijk verkeerd tussen die tafel en de volgende,
en deze fout zal cascade door de rest van het plan.
Google naar
"Tuning by kardinaliteit feedback ', en je zal een paper geschreven door
Wolfgang Breitling die beschrijft (in een veel betere manier) de abobve
aanpak vinden. Het is echt een goed boek!
Zorg er ook voor op te
hangen rond Jonathan Lewis Blog. als er iets over de Oracle optimizer
hij niet weet, het is niet de moeite waard te weten. Hij heeft het beste
boek over dit onderwerp geschreven ook. Check out CostBased Oracle
fundamentals. Als ik kon een boek terug in de tijd om mezelf te sturen,
zou dit het zijn.bekijk meer replica rolex en IWC Da Vinci
没有评论:
发表评论