Primero que nada déjeme felicitarlo por hacer tan amena la clase y por explicar tan claro, también quiero agradecerle por compartir sus altos conocimientos. Sólo me queda una duda, ¿cuándo corresponde usar un índice agrupado y cuándo uno no agrupado? Alguien me podría ayudar con esa duda?
Indice agrupado solo puede existir uno y este indica el ordenamiento sobre el que se basa toda la tabla, los demás deben ser índices no agrupados. Los índices se crean en función de las consultas que cree y la idea es mejorar la velocidad de estas.
Muy buen material hermano, saludos. Quizás sea trivial la respuesta a mi pregunta pero...Existe alguna especie de "guía" que ayude en el análisis sobre que campos elegir para nuestros indices? Quiero decir, que tipo de dato es ideal para nuestro indice (ésto, en el entendido que no todos los campos/tipos se pueden indizar) . Y, si necesito un indice compuesto (2 campos o más) como elegir el orden de los campos en el indice debe incorporar. Cual sería el criterio a considerar?
Lo que se necesita para determinar los índices es un análisis de las consultas que se realizan, cuáles son las de mayor demanda y campos de que tablas usan, en base a esto crear los índices, en cuanto eficiencia es mejor indizar campos numéricos sobre los de texto en la medida de lo posible.
@@visoalgt Interesante. Tengo un caso dónde he diseñado un índice que sirve a consultas, las cuales se basan primero en un intervalo de tiempo y demás campos de tipo cadena subsecuentemente. Esperaba que al ejecutar el query de consulta, SQL tomara el índice creado por mi pero extrañamente para mí, me sugiere un índice que comienza por un campo de tipo texto. De aquí mi duda sobre el orden de los campos incluidos en el índice
excelente explicacion, estoy pensando si un campo es tipo datetime tambien es candidato para indexar porque es uno de los campos que se usa mucho como filtro en las query asi que seguramente a estos campos les viene bien ser indices o me equivoco?
Estimado son muy útiles tus videos. Quiero consultarte algo: al hacer un CheckDB quisiera que los resultados me los guarde en un archivo de texto. será posible ? DBCC CHECKDB ('miBase')
-- Activar las opciones avanzadas y es necesario para configurar xp_cmdshell EXEC sp_configure 'show advanced options', '1' RECONFIGURE -- esto habilita xp_cmdshell EXEC sp_configure 'xp_cmdshell', '1' RECONFIGURE --Crear una tabla Create table test (codigo int not null identity(1,1), texto varchar(max) ) --Insertarle datos a la tabla Insert into test (texto) EXEC('master..xp_cmdshell ''ISQL -E -Q"dbcc checkdb(master)"''')
Hola Victor. como estas? Victor. hacer una reorganización o recrear nuevamente mi índice me puede dañar la tabla si este no terminara de correr hasta el final? saludos. agradecido de antemano. debo comentar que mi tabla tiene 20 millones de registros, tiene aprox 10 índices y el % de fragmentacion esta por encima de 90. que me aconsejas.
Dañar la tabla al punto de no leerla no, pero si volver lentas las consultas, es como ponerse a arreglar nuestro dormitorio y dejarlo a medias, mas desarreglado que como estaba inicialmente.
Seguramente hay consultas que se benefician de los indices actuales, lo que habría que investigar es los indices que no se usan y esos si, eliminarlos.
Buenas tardes profesor, estoy llevando a cabo el curso de administración de base de datos en sql server que dicta, y tengo problemas para conectar e segundo equipo vitual con el primero, no me reconoce el domain name para conectarlo. como podrias resolverlo ? desde ya gracias
Escribame por favor en el portal donde lo esta recibiendo para contestarle por esa via. normalmente el problema que indica es por estar mal configurada la dirección del DNS en los equipos.
select s.name as 'Schema',t.name as 'table',i.name as 'index', DDIPS.avg_fragmentation_in_percent, DDIPS.page_count from sys.dm_db_index_physical_stats(DB_ID(),null,null,null,null) as DDIPS INNER JOIN sys.tables t on t.object_id = DDIPS.object_id INNER JOIN sys.schemas s on t.schema_id = s.schema_id INNER JOIN sys.indexes i on i.object_id = DDIPS.object_id and DDIPS.index_id = i.index_id WHERE DDIPS.database_id = DB_ID() and i.name is not null and DDIPS.avg_fragmentation_in_percent > 0 ORDER BY DDIPS.avg_fragmentation_in_percent desc
Súper vídeo. Sigue compartiendo más cosas así
Gracias maestro. Muy muy interesante
Saludos!
Primero que nada déjeme felicitarlo por hacer tan amena la clase y por explicar tan claro, también quiero agradecerle por compartir sus altos conocimientos.
Sólo me queda una duda, ¿cuándo corresponde usar un índice agrupado y cuándo uno no agrupado?
Alguien me podría ayudar con esa duda?
Indice agrupado solo puede existir uno y este indica el ordenamiento sobre el que se basa toda la tabla, los demás deben ser índices no agrupados. Los índices se crean en función de las consultas que cree y la idea es mejorar la velocidad de estas.
Acabe de comprar tu curso de Administracion en tu web !
Muchas gracias! Estoy a las ordenes cualquier consulta, por alli te llegar un correo con la info de contacto.
Muy buen material hermano, saludos.
Quizás sea trivial la respuesta a mi pregunta pero...Existe alguna especie de "guía" que ayude en el análisis sobre que campos elegir para nuestros indices? Quiero decir, que tipo de dato es ideal para nuestro indice (ésto, en el entendido que no todos los campos/tipos se pueden indizar) . Y, si necesito un indice compuesto (2 campos o más) como elegir el orden de los campos en el indice debe incorporar. Cual sería el criterio a considerar?
Lo que se necesita para determinar los índices es un análisis de las consultas que se realizan, cuáles son las de mayor demanda y campos de que tablas usan, en base a esto crear los índices, en cuanto eficiencia es mejor indizar campos numéricos sobre los de texto en la medida de lo posible.
@@visoalgt Interesante. Tengo un caso dónde he diseñado un índice que sirve a consultas, las cuales se basan primero en un intervalo de tiempo y demás campos de tipo cadena subsecuentemente. Esperaba que al ejecutar el query de consulta, SQL tomara el índice creado por mi pero extrañamente para mí, me sugiere un índice que comienza por un campo de tipo texto. De aquí mi duda sobre el orden de los campos incluidos en el índice
excelente explicacion, estoy pensando si un campo es tipo datetime tambien es candidato para indexar porque es uno de los campos que se usa mucho como filtro en las query asi que seguramente a estos campos les viene bien ser indices o me equivoco?
Si un campo de fecha puede ser indizado y puede resultar muy efectivo para las consutlas con parametros de tiempo
Ing victor consulta da cursos en linea ya que en el video veo participación de alumnos.
El mantenimiento comienza en el minuto 36:15
Cuando es recomendable usar REBUILD o REORGANIZE 48:38
Si la desfragmentación es > 5% pero < = 30% se aconseja Reorganizar, si es
Muy bueno el video. Esta disponible esa base de datos para hacer la practica y poder apreciar mejor todo lo que se hizo en mi pc? Muchisimas Gracias.
Estimado son muy útiles tus videos. Quiero consultarte algo: al hacer un CheckDB quisiera que los resultados me los guarde en un archivo de texto. será posible ? DBCC CHECKDB ('miBase')
-- Activar las opciones avanzadas y es necesario para configurar xp_cmdshell
EXEC sp_configure 'show advanced options', '1'
RECONFIGURE
-- esto habilita xp_cmdshell
EXEC sp_configure 'xp_cmdshell', '1'
RECONFIGURE
--Crear una tabla
Create table test
(codigo int not null identity(1,1),
texto varchar(max)
)
--Insertarle datos a la tabla
Insert into test (texto)
EXEC('master..xp_cmdshell ''ISQL -E -Q"dbcc checkdb(master)"''')
Hola Victor. como estas? Victor. hacer una reorganización o recrear nuevamente mi índice me puede dañar la tabla si este no terminara de correr hasta el final? saludos. agradecido de antemano. debo comentar que mi tabla tiene 20 millones de registros, tiene aprox 10 índices y el % de fragmentacion esta por encima de 90. que me aconsejas.
Dañar la tabla al punto de no leerla no, pero si volver lentas las consultas, es como ponerse a arreglar nuestro dormitorio y dejarlo a medias, mas desarreglado que como estaba inicialmente.
@@visoalgt muchas gracias victor.
Que pasa si tengo demasiados índices Hipotéticos y los elimino, afecta el performance de mis consultas o es recomendable dejarlos. Saludos
Seguramente hay consultas que se benefician de los indices actuales, lo que habría que investigar es los indices que no se usan y esos si, eliminarlos.
Buenas tardes profesor, estoy llevando a cabo el curso de administración de base de datos en sql server que dicta, y tengo problemas para conectar e segundo equipo vitual con el primero, no me reconoce el domain name para conectarlo. como podrias resolverlo ? desde ya gracias
Escribame por favor en el portal donde lo esta recibiendo para contestarle por esa via. normalmente el problema que indica es por estar mal configurada la dirección del DNS en los equipos.
hola en cual de los tres cursos de udemy esta este tema??? y el agente de Sql Server y el matenimiento??
Es el de Administración de SQL Server
@@visoalgt Muchas gracias
me gustaría por favor que me facilitara ese script
select s.name as 'Schema',t.name as 'table',i.name as 'index',
DDIPS.avg_fragmentation_in_percent,
DDIPS.page_count
from
sys.dm_db_index_physical_stats(DB_ID(),null,null,null,null) as DDIPS
INNER JOIN sys.tables t on t.object_id = DDIPS.object_id
INNER JOIN sys.schemas s on t.schema_id = s.schema_id
INNER JOIN sys.indexes i on i.object_id = DDIPS.object_id and DDIPS.index_id = i.index_id
WHERE DDIPS.database_id = DB_ID()
and i.name is not null
and DDIPS.avg_fragmentation_in_percent > 0
ORDER BY DDIPS.avg_fragmentation_in_percent desc
@@kuki240 Gracias por compartir!!!
Esta aburrido, no entendi. gracias x nada