Escolar Documentos
Profissional Documentos
Cultura Documentos
Categoras
BasesdeDatos
MsAccess
Firebird
MsSQL
PostgreSQL
MySQL
Oracle
Informix
SQLite
MariaDB
Lenguajes
Ajax
ASP.net
C++
C#.Net
CSS
Delphi
HTML
GTK
GWT
Java
ADF
EJB
Hibernate
VB.Net
Apache
Empresas
Google
Microsoft
Encriptado
AES
Escritorios
Gnome
KDE
EXTJS
Reporteadores
CrystalReports
FastReport
JasperReport
ReportingService
Hardware
AceleradorasGraficas
Gabinetes
IDE
CodeGear
Dreamweaver
SQLServerManagementStudio
Eclipse
JDeveloper
NetBeans
VisualStudio
IIS
JBoss
SistemasOperativos
Android
GNU/Linux
Ubuntu
openSuSE
Windows
WindowsServer
Solaris
Mac
Maemo
Plataformas
Consola
Desktop
Web
Seguridad
Tutoriales
SobreelSitio
Registrarse
Login
FollowonTwitter
Tutorialbsicoparainterpretarel
plandeejecucindeSQLServer
Megusta
Tweet
PararealizarSQLTunninganuestrasbasesdedatos,enlamayorade
loscasosnecesitaremospacienciaytiempoparaanalizarcondetenimiento
comoestfuncionandotodo,asenbaseaeso,determinarmedidasde
accinparalaoptimizacin.
ParaverelplandeejecucindeunqueryesmuysencilloenSSMS,
podemosverelEstimadoyelReal:
PlandeEjecucinEstimado:DesdeelMenConsultas>MostrarPlan
deEjecucinEstimadooconlacombinacindeteclasCtrl+L.Estono
ejecutarlaquerysinomsbienloanalizarymostrarunaaproximacin
delcostodesuejecucin.
PlandeEjecucinReal:DesdeelMenConsultas>IncluirPlande
EjecucinRealoconlacombinacindeteclasCtrl+M.Conestaopcin
podremosverelcostorealdeunaquery,peroadiferenciadelanterior,se
muestraalterminarlaejecucindelamisma.
Tambinotraopcinesejecutaresto,quenosmostrarenmodotextoel
plandeejecucin.
SETSHOWPLAN_ALL{ON|OFF}
Veamoslasdistintasopcionesquepuedenapareceryenquesituaciones
deberanhacerlo.
TableScan
Estoindicaqueelmotornecesitaleercompletamentelatablasinutilizar
unndice.Enlamayoradeloscasossuaparicinquieredecirque
estamoshaciendomallascosas,ynecesitamosurgentecrearunndiceo
reestructurarlosiyaexistealguno.Aunquenosiempreesas,elmotor
siempreintentapredecirloscostosdeejecucinbasadosen
lasestadsticasquevaalmacenando,sielestimaquevasermsrpido
leertodalatablaenvezdeleerunndice,usaresemtodo.Estosuele
sucedercontablaspocopobladasylaqueryencuestinnoconlleva
ningnfiltro,yaquereduceconsiderablementeeloverhead.Ejemplo:
SELECT*FROMtabla;
ClusteredIndexScan
EssemejantealTableScan,yaquerecorrecompletamentelatablapero
utilizandostavezalgunodelosndicesclustereddelquedispone.
Aparecenormalmenteentablasqueestnpobladasconsiderablemente.
Ejemplo:
SELECT*FROMtabla;
ClusteredIndexSeek
Verestoessntomadeuncorrectousodelosndicesclusteredenlabase
dedatos,paraverloenaccinsimplementetenemosquetrabajarconlos
camposquetienendices,Ejemplo:
SELECT*FROMtablaWHEREcolumna=44;
IndexScan
EsteesmuyparecidoalTableScanyClusteredIndexScan,laprincipal
diferenciaradicaenquesteutilizaunndiceNonClusteredpararecorrer
latabla.Justamenteparaestaseccinylasquevienenmsabajohace
unosdasescribunartculoquelesayudaradiferenciarentreunIndice
AgrupadoyunoNoAgrupado.Aunquemuchasvecessuelesersntoma
deunmalusodelosndices,tambinaparececuandousamoslasclusulas
ORDERBY,JOINoGROUPBY.Ejemplo
SELECTcolumnaNonClusteredFROMtablaORDERBYcolumnaNonClustered
IndexSeek
Yavasiendoobvioquehaceelindexseek,trabajaigualqueelClustered
IndexSeek,perotrabajarconunIndiceNonClustered.SiEjemplo:
SELECTcolumnaNonClusteredFROMtablaWHEREcolumnaNonClustered=44;
BookmarkLookup
Conloyavistoenelarticuloanteriorcomprenderemosmejorcomo
funcionaelBookmarkLookup.Debemoscomprenderquenopodremos
evitartenerestetipodeoperacinenlaBD,loquesisedebebuscares
queseamnimasuaparicinycuandolohace,lohagaconuncostobajo.
Esteaparececuandoserequierehacerunsaltodelapuntadordelndice
nonclusteredalapginasdedatosreal.Unadelasmanerasparaevitar
suaparicinexcesivaeslimitarloscamposrequeridosenlaquery,slo
solicitarlosqueestnincluidosenelndice,staeslaprincipalraznpor
laquehabrnescuchadomsdeunavez,noescribasquerysSELECT*
FROM...
Enalgunoscasosextremos(repito,muyextremos)sepodraconsiderarla
inclusindetodaslascolumnasdelatabladentrodelndice.
UnadelasmejorasqueseintrodujoapartirdeSQLServer2005,esque
enlosndicesNonClusteredsepuedenagregarocopiarelcontenidode
lascolumnas,sinqueestasseanpartedelndiceens,esdecir,queno
servirnpararealizarbsquedasnifiltrosperosicuandolosnecesite
mostrartendrunacopiaamanodelosdatos,sintenerlanecesidadde
usarelpunteroparabuscarenlatablaeldato.Estacaractersticaesun
armadedoblefilo,sibienesciertoquesiselousabienpodrareducir
considerablementeelcostodelasconsultas,perosulado
contraproducente,esquealtenermsdatoslosndices,estoscrecen
rpidamenteporqueocupanmsespacioyporendesetienenmenos
clavesporcadapginadendiceloquepodrallegaraaumentarelnivel
deI/O.Asque,debenconsiderarelcontextoparautilizarlo.
RIDLookup
Esteoperadornoesmuyfrecuentedever,ynormalmenteaparececuando
elmotorintentaoptimizarporsucuentalaqueryynotenemosunndice
agrupado(Clustered)entoncesbuscaratravsdelndicenicoROWID
(deahelnombreRID).Sirequieresolucinestetipodeoperacioneses
muydependientedecaso.Ejemplo
SELECTcolumna1,columna2FROMtablaWHEREcolumna1<100000;
Sort
Estaoperacinveremoscuandoelmotorrequiereordenaralgncampo
quenoestindizado,porejemplocuandoaplicamoslaclusulaORDER
BY,GROUPBY,TOP,etc.Normalmentecuandoaparecedebemos
echarojo,parasabersifaltaalgnndiceenalgunatabla,peronosiempre
esas,llenardendiceslaBDnoessanotampoco,yexistenocasionesque
debemosejecutarqueryspocofrecuentesquenoameritanlacreacinde
otrondicems.
SELECT*FROMtablaORDERBYcolumna;
JOIN
EloperadorJOINsedivideentrestiposdeJOINnuevamente.Entranen
accincuandojustamentesehacenusodelasclusulasJOINparaunirdos
omstablasenlaqueryyestdeterminadonormalmenteporelvolumen
dedatosconelquesetrabajarparaqueSQLServerelijausarunouotro.
NestedLoopJoin
Normalmentevemosesteoperadorcuandoelvolumendedatosconelque
setrabajaresrelativamentepequeo.Ejemplo.
SELECT*FROMtabla1t1INNERJOINtabla2t2ONt1.columna=t2.columna
MergeJoin
Esteoperadoraligualqueelanteriorsehacesuaparicinenlauninde
tablas,perocuandoelvolumendedatosesconsiderablementemsgrande,
hablamosdecientosdemilescomunmente
SELECT*FROMtabla1t1INNERJOINtabla2t2ONt1.columna=t2.columna;
HashJoin
EstetipodeJOINesmuyespecificoparagrandesvolmenesdedatos,
especialmentesinoestnindizados.SinosapareceennuestraBDOLTP,
deberamospreocuparnosyaqueestpensadoenfuncionarmejorensobre
losdiseosOLAP,asquesinoestntrabajandoconalgnDATA
WAREHOUSING,esmuypocoprobablequelesseatil.ElHashJoin
estodounmundoaparte,ymereceunartculodedicadonetamenteal,
asqueextenderemoseltemamsadelante.
HashMatch
Cuandovenesteoperadoresporqueelmotorestcompandocontenido,
puedeaparecerenunJOIN,WHEREysonlugaresdondenodeberan
estar,lohacenporfaltadeindicesprincipalmente.Dondesisonmuy
tilesescuandoincluimoslaclusulaDISTINCT,UNION,UNION
ALL,endondenosolosecomparaelvalordeuncampo,sinodetodoun
conjuntodecolumnasoinclusofilasycolumnas.
StreamAggregate
Apareceprincipalmentecuandoagrupamoslosdatos,ymezclamoscon
funcionesagregadascomoMIN,SUM,AVG,tambinconlaclusula
HAVING.Tambinesfrecuenteverqueesteoperadorllevaacompaado
aSORT,aquienutilizaparaordenarprimeramentelosdatosantesde
agrupar.
Paracomplementaryprofundizarestesencilloarticulo,existenmuchos
librosquepuedenleer.Lamayorpartedelabuenainformacinse
encuentraenInglesperovalelapenaleerlo.Lesdejounodeloslibros
gratuitosquetocaeltema,escritoporRedGate.
19
Youmayalsolike:
PAGINAR
FORZARAMODO
CREAR CONFIGURAR
CONSULTAS
IMPLCITOLAS
CONSULTAS
SQLSERVER
SQLCON
TRANSACCIONES
SQLCON
PARA
SQL
ENSQLSERVER
FILTROSALMACENAR
SERVER
DINMICOS
ELESTADO
Paginar
consultasSQL
conSQLServer
2012osuperior
Forzaramodo
Implcitolas
transaccionesen
SQLServer
CrearConsultas
SQLconfiltros
dinmicosde
maneraeficiente
COMO
EJECUTAR
SQL
DINMICO
ENSQL
GetRidofYour Comoejecutar
EyeBagsin
SQLdinmico
Minutes
enSQLServer
BeautyandSkin101
Tipspara
optimizarel
rendimientode
SQLServer
ConfigurarSQL
Serverpara
almacenarel
estadodela
sesinde
ASP.NET
Comodepurar
enSQLServer
2008pasoa
paso:
Procedimientos
almacenados,
triggersy
funciones
AdsbyShareaholic
4agosto2011
Ver5comentarios
PorGeekZero
ShortURL
BasesdeDatosMsSQLOptimizacionTutoriales
ComentariosdesdeFacebook:
Megusta A19personaslesgustaesto.Registrarteparaverqulesgustaatusamigos.
5comentarios
Ordenarpor Losmsantiguos
Agregaruncomentario...
FranciscoAngelJavierPrietoGerentePropietarioen
Creacionesintegrales
Realmenteunaplausodesdeelalmaparaelautordeestagua!!!
MegustaResponder
411deoctubrede201212:31
GabrielaFalcn
Excelentegua!!
MegustaResponder22deoctubrede201212:04
SergioA.GaticaM.TrabajaenIBot,SolucionesInformaticas
excelente.gracias!!
MegustaResponder20denoviembrede201215:06
NicolasPazFilgueiraBuenosAires
Buenisima!
MegustaResponder1demarzode201312:24
ElvinMartinezCornielleSantoDomingo
Muybuena.....
MegustaResponder
14dediciembrede20135:18
FacebookCommentsPlugin
Ver5comentarios
DejatuComentario
1.
Sebastian
25septiembre2013at09:06#
Muybuenainfo..Gracias!!
Responder
2.
Maritus
23julio2012at09:31#
Muchasgraciasporeltutorial,mevienedemaravilla,yaqueestoycomenzandoconestodeSQL
SERVER..
Responder
Responder
Trackbacks/Pingbacks
1. RendimientoenSQLSERVER|devblogdooflow
27marzo2015
[]http://devtroce.com/2011/08/04/tutorialbasicoparainterpretarelplandeejecucionde
sqlserver/[]
2. ClausulaINvsBETWEENAND[SQLTunning]|DevTroce.com
26julio2012
[]Paracomprenderstearticulorecomiendoquehagaunalecturaintroductoriasobrela
interpretacindelosplanesdeejecucinenSQLServer.Loquedemostraremosserlaventaja
enrendimientodelBETWEENANDsobrela[]
3. ComooptimizarlasquerysconclusulaLIKEenSQL[SQLTunning]|DevTroce.com
5agosto2011
[]SibienexistenvariosargumentosquepodemosagregaralLIKE,elmscomnypesado
eselcomodn(%).Esteproblema,siselopuedellamarasocurrenenSQLServer,Oracle,
PostgreyMySQL(probablementeenotrosmotorestambin,peronomeconstan)ascomola
solucinqueveremosaplicaatodosellos.Sirequierencomprenderelplandeejecucinpueden
leerloaqu.[]
Responder
YourName
B i
U del
YourEmail
YourURL
Code
Notificarmeamiemailsihaynuevoscomentarios
No soy un robot
reCAPTCHA
Privacidad - Condiciones
EnviarComentario
Buscasalgo?
BuscarconGoogle
Siguenos!
Buscar
Email:
RevisatucarpetaSpamsinotellegaelcorreo
Suscribirme,esgratis!
Categoras
Categoras Elegircategora
Histrico
Histrico Elegirmes
Etiquetas
UltimosComentados
newslnrdnr enComoprogramarennCapasconC#(Parte1)
newslnr enComoprogramarennCapasconC#(Parte1)
Martha enComocrearreportesconCrystalReportsenASP.NetySQLServer
Witness enTutorialdeProgramacinAndroid:ManejodeActivity
GISELLE enMostrarimagenalmacenadaenlabasededatosconAsp.Net
WashingtonPaul enComosaberqueproceso(PID)w3wp.exeperteneceacualAppPool
enIIS6
Victor enValidarCertificadoSSLconVB.NetyC#.Net
RendimientoenSQLSERVER|devblogdooflow enTutorialbsicoparainterpretarel
plandeejecucindeSQLServer
NotasTecnicas|Pearltrees enTipsparaoptimizarelrendimientodeSQLServer
vanessa enInstalarServidordeSubVersionenWindows
AvatarsbySterlingAdventures