tutorial básico para interpretar el plan de ejecución de sql server _ devtroce
DESCRIPTION
Plan de sqlTRANSCRIPT
-
InicioCategoras
BasesdeDatosMsAccessFirebirdMsSQLPostgreSQLMySQLOracleInformixSQLiteMariaDB
LenguajesAjaxASP.netC++C#.NetCSSDelphiHTMLGTKGWTJava
ADFEJBHibernate
VB.NetApacheEmpresas
GoogleMicrosoft
EncriptadoAES
EscritoriosGnomeKDE
EXTJSReporteadores
CrystalReportsFastReportJasperReportReportingService
HardwareAceleradorasGraficasGabinetes
IDE
-
Megusta 7 Tweet
CodeGearDreamweaverSQLServerManagementStudioEclipseJDeveloperNetBeansVisualStudio
IISJBossSistemasOperativos
AndroidGNU/LinuxUbuntuopenSuSEWindowsWindowsServerSolarisMacMaemo
PlataformasConsolaDesktopWeb
SeguridadTutoriales
SobreelSitioRegistrarseLogin
FollowonTwitter
TutorialbsicoparainterpretarelplandeejecucindeSQLServer
PararealizarSQLTunninganuestrasbasesdedatos,enlamayoradeloscasosnecesitaremospacienciaytiempoparaanalizarcondetenimientocomoestfuncionandotodo,asenbaseaeso,determinarmedidasdeaccinparalaoptimizacin.
ParaverelplandeejecucindeunqueryesmuysencilloenSSMS,podemosverelEstimadoyelReal:
PlandeEjecucinEstimado:DesdeelMenConsultas>MostrarPlandeEjecucinEstimadooconlacombinacindeteclasCtrl+L.Estonoejecutarlaquerysinomsbienloanalizarymostrarunaaproximacindelcostodesuejecucin.
PlandeEjecucinReal:DesdeelMenConsultas>IncluirPlandeEjecucinRealoconlacombinacindeteclasCtrl+M.Conestaopcin
-
podremosverelcostorealdeunaquery,peroadiferenciadelanterior,semuestraalterminarlaejecucindelamisma.
Tambinotraopcinesejecutaresto,quenosmostrarenmodotextoelplandeejecucin.
Veamoslasdistintasopcionesquepuedenapareceryenquesituacionesdeberanhacerlo.
TableScanEstoindicaqueelmotornecesitaleercompletamentelatablasinutilizarunndice.Enlamayoradeloscasossuaparicinquieredecirqueestamoshaciendomallascosas,ynecesitamosurgentecrearunndiceoreestructurarlosiyaexistealguno.Aunquenosiempreesas,elmotorsiempreintentapredecirloscostosdeejecucinbasadosenlasestadsticasquevaalmacenando,sielestimaquevasermsrpidoleertodalatablaenvezdeleerunndice,usaresemtodo.Estosuelesucedercontablaspocopobladasylaqueryencuestinnoconllevaningnfiltro,yaquereduceconsiderablementeeloverhead.Ejemplo:
ClusteredIndexScanEssemejantealTableScan,yaquerecorrecompletamentelatablaperoutilizandostavezalgunodelosndicesclustereddelquedispone.Aparecenormalmenteentablasqueestnpobladasconsiderablemente.Ejemplo:
SETSHOWPLAN_ALL{ON|OFF}
SELECT*FROMtabla;
SELECT*FROMtabla;
-
ClusteredIndexSeekVerestoessntomadeuncorrectousodelosndicesclusteredenlabasededatos,paraverloenaccinsimplementetenemosquetrabajarconloscamposquetienendices,Ejemplo:
IndexScanEsteesmuyparecidoalTableScanyClusteredIndexScan,laprincipaldiferenciaradicaenquesteutilizaunndiceNonClusteredpararecorrerlatabla.JustamenteparaestaseccinylasquevienenmsabajohaceunosdasescribunartculoquelesayudaradiferenciarentreunIndiceAgrupadoyunoNoAgrupado.Aunquemuchasvecessuelesersntomadeunmalusodelosndices,tambinaparececuandousamoslasclusulasORDERBY,JOINoGROUPBY.Ejemplo
IndexSeek
SELECT*FROMtablaWHEREcolumna=44;
SELECTcolumnaNonClusteredFROMtablaORDERBYcolumnaNonClustered
-
Yavasiendoobvioquehaceelindexseek,trabajaigualqueelClusteredIndexSeek,perotrabajarconunIndiceNonClustered.SiEjemplo:
BookmarkLookupConloyavistoenelarticuloanteriorcomprenderemosmejorcomofuncionaelBookmarkLookup.DebemoscomprenderquenopodremosevitartenerestetipodeoperacinenlaBD,loquesisedebebuscaresqueseamnimasuaparicinycuandolohace,lohagaconuncostobajo.
Esteaparececuandoserequierehacerunsaltodelapuntadordelndicenonclusteredalapginasdedatosreal.Unadelasmanerasparaevitarsuaparicinexcesivaeslimitarloscamposrequeridosenlaquery,slosolicitarlosqueestnincluidosenelndice,staeslaprincipalraznporlaquehabrnescuchadomsdeunavez,noescribasquerysSELECT*FROM...
Enalgunoscasosextremos(repito,muyextremos)sepodraconsiderarlainclusindetodaslascolumnasdelatabladentrodelndice.
UnadelasmejorasqueseintrodujoapartirdeSQLServer2005,esqueenlosndicesNonClusteredsepuedenagregarocopiarelcontenidodelascolumnas,sinqueestasseanpartedelndiceens,esdecir,quenoservirnpararealizarbsquedasnifiltrosperosicuandolosnecesitemostrartendrunacopiaamanodelosdatos,sintenerlanecesidaddeusarelpunteroparabuscarenlatablaeldato.Estacaractersticaesunarmadedoblefilo,sibienesciertoquesiselousabienpodrareducirconsiderablementeelcostodelasconsultas,perosuladocontraproducente,esquealtenermsdatoslosndices,estoscrecenrpidamenteporqueocupanmsespacioyporendesetienenmenosclavesporcadapginadendiceloquepodrallegaraaumentarelnivel
SELECTcolumnaNonClusteredFROMtablaWHEREcolumnaNonClustered=44;
-
deI/O.Asque,debenconsiderarelcontextoparautilizarlo.
RIDLookupEsteoperadornoesmuyfrecuentedever,ynormalmenteaparececuandoelmotorintentaoptimizarporsucuentalaqueryynotenemosunndiceagrupado(Clustered)entoncesbuscaratravsdelndicenicoROWID(deahelnombreRID).Sirequieresolucinestetipodeoperacionesesmuydependientedecaso.Ejemplo
SortEstaoperacinveremoscuandoelmotorrequiereordenaralgncampoquenoestindizado,porejemplocuandoaplicamoslaclusulaORDERBY,GROUPBY,TOP,etc.Normalmentecuandoaparecedebemosecharojo,parasabersifaltaalgnndiceenalgunatabla,peronosiempreesas,llenardendiceslaBDnoessanotampoco,yexistenocasionesquedebemosejecutarqueryspocofrecuentesquenoameritanlacreacindeotrondicems.
SELECTcolumna1,columna2FROMtablaWHEREcolumna1
-
JOINEloperadorJOINsedivideentrestiposdeJOINnuevamente.EntranenaccincuandojustamentesehacenusodelasclusulasJOINparaunirdosomstablasenlaqueryyestdeterminadonormalmenteporelvolumendedatosconelquesetrabajarparaqueSQLServerelijausarunouotro.
NestedLoopJoinNormalmentevemosesteoperadorcuandoelvolumendedatosconelquesetrabajaresrelativamentepequeo.Ejemplo.
MergeJoinEsteoperadoraligualqueelanteriorsehacesuaparicinenlaunindetablas,perocuandoelvolumendedatosesconsiderablementemsgrande,hablamosdecientosdemilescomunmente
SELECT*FROMtabla1t1INNERJOINtabla2t2ONt1.columna=t2.columna
SELECT*FROMtabla1t1INNERJOINtabla2t2ONt1.columna=t2.columna;
-
HashJoinEstetipodeJOINesmuyespecificoparagrandesvolmenesdedatos,especialmentesinoestnindizados.SinosapareceennuestraBDOLTP,deberamospreocuparnosyaqueestpensadoenfuncionarmejorensobrelosdiseosOLAP,asquesinoestntrabajandoconalgnDATAWAREHOUSING,esmuypocoprobablequelesseatil.ElHashJoinestodounmundoaparte,ymereceunartculodedicadonetamenteal,asqueextenderemoseltemamsadelante.
HashMatchCuandovenesteoperadoresporqueelmotorestcompandocontenido,puedeaparecerenunJOIN,WHEREysonlugaresdondenodeberanestar,lohacenporfaltadeindicesprincipalmente.DondesisonmuytilesescuandoincluimoslaclusulaDISTINCT,UNION,UNIONALL,endondenosolosecomparaelvalordeuncampo,sinodetodounconjuntodecolumnasoinclusofilasycolumnas.
-
StreamAggregateApareceprincipalmentecuandoagrupamoslosdatos,ymezclamosconfuncionesagregadascomoMIN,SUM,AVG,tambinconlaclusulaHAVING.TambinesfrecuenteverqueesteoperadorllevaacompaadoaSORT,aquienutilizaparaordenarprimeramentelosdatosantesdeagrupar.
Paracomplementaryprofundizarestesencilloarticulo,existenmuchoslibrosquepuedenleer.LamayorpartedelabuenainformacinseencuentraenInglesperovalelapenaleerlo.Lesdejounodeloslibrosgratuitosquetocaeltema,escritoporRedGate.
[ 6 ) k
Youmayalsolike:
PaginarconsultasSQLconSQLServer2012osuperior
PAGINARCONSULTASSQLCONSQLSERVER
ForzaramodoImplcitolastransaccionesenSQLServer
FORZARAMODOIMPLCITOLASTRANSACCIONESENSQLSERVER
CrearConsultasSQLconfiltrosdinmicosdemaneraeficiente
CREARCONSULTASSQLCONFILTROSDINMICOS
ConfigurarSQLServerparaalmacenarelestadodelasesindeASP.NET
CONFIGURARSQLSERVERPARAALMACENARELESTADO
GetRidofYourEyeBagsinMinutesBeautyandSkin101
ComoejecutarSQLdinmicoenSQLServer
COMOEJECUTARSQLDINMICOENSQL
TipsparaoptimizarelrendimientodeSQLServer
ComodepurarenSQLServer2008pasoapaso:Procedimientosalmacenados,triggersyfunciones
19 7
-
4agosto2011
Ver5comentariosPorGeekZeroShortURLBasesdeDatosMsSQLOptimizacionTutoriales
ComentariosdesdeFacebook:
A19personaslesgustaesto.Registrarteparaverqulesgustaatusamigos.Megusta
AdsbyShareaholic
-
Ver5comentarios
DejatuComentario
1.Sebastian 25septiembre2013at09:06#
Muybuenainfo..Gracias!!
Responder
2.Maritus 23julio2012at09:31#
Muchasgraciasporeltutorial,mevienedemaravilla,yaqueestoycomenzandoconestodeSQLSERVER..
Responder
5comentarios Ordenarpor
FranciscoAngelJavierPrietoGerentePropietarioenCreacionesintegralesRealmenteunaplausodesdeelalmaparaelautordeestagua!!!
MegustaResponder 411deoctubrede201212:31
GabrielaFalcnExcelentegua!!MegustaResponder22deoctubrede201212:04
SergioA.GaticaM.TrabajaenIBot,SolucionesInformaticasexcelente.gracias!!MegustaResponder20denoviembrede201215:06
NicolasPazFilgueiraBuenosAiresBuenisima!MegustaResponder1demarzode201312:24
ElvinMartinezCornielleSantoDomingoMuybuena.....
MegustaResponder 14dediciembrede20135:18
FacebookCommentsPlugin
Losmsantiguos
Agregaruncomentario...
-
Responder
Trackbacks/Pingbacks
1. RendimientoenSQLSERVER|devblogdooflow 27marzo2015
[]http://devtroce.com/2011/08/04/tutorialbasicoparainterpretarelplandeejecuciondesqlserver/[]
2. ClausulaINvsBETWEENAND[SQLTunning]|DevTroce.com 26julio2012
[]ParacomprenderstearticulorecomiendoquehagaunalecturaintroductoriasobrelainterpretacindelosplanesdeejecucinenSQLServer.LoquedemostraremosserlaventajaenrendimientodelBETWEENANDsobrela[]
3. ComooptimizarlasquerysconclusulaLIKEenSQL[SQLTunning]|DevTroce.com 5agosto2011
[]SibienexistenvariosargumentosquepodemosagregaralLIKE,elmscomnypesadoeselcomodn(%).Esteproblema,siselopuedellamarasocurrenenSQLServer,Oracle,PostgreyMySQL(probablementeenotrosmotorestambin,peronomeconstan)ascomolasolucinqueveremosaplicaatodosellos.Sirequierencomprenderelplandeejecucinpuedenleerloaqu.[]
Responder
YourName YourEmail YourURL
B i U del Code
Notificarmeamiemailsihaynuevoscomentarios
No soy un robotreCAPTCHA
Privacidad - Condiciones
EnviarComentarioBuscasalgo? Buscar
BuscarconGoogle
Siguenos!
-
Email:RevisatucarpetaSpamsinotellegaelcorreo
Suscribirme,esgratis!
Categoras
Categoras Elegircategora
Histrico
Histrico Elegirmes
Etiquetas
UltimosComentados
newslnrdnr enComoprogramarennCapasconC#(Parte1)newslnr enComoprogramarennCapasconC#(Parte1)
-
Martha enComocrearreportesconCrystalReportsenASP.NetySQLServerWitness enTutorialdeProgramacinAndroid:ManejodeActivityGISELLE enMostrarimagenalmacenadaenlabasededatosconAsp.NetWashingtonPaul enComosaberqueproceso(PID)w3wp.exeperteneceacualAppPoolenIIS6Victor enValidarCertificadoSSLconVB.NetyC#.NetRendimientoenSQLSERVER|devblogdooflow enTutorialbsicoparainterpretarelplandeejecucindeSQLServerNotasTecnicas|Pearltrees enTipsparaoptimizarelrendimientodeSQLServervanessa enInstalarServidordeSubVersionenWindows
-
AvatarsbySterlingAdventures