Quiero acelerar mis consultas en SQL Server!! (Continuación)

Muchos clientes se quejan de consultas lentas, para ello os voy a dar unas guías básicas como una e-pildora que ampliaré en vista de la utilidad y éxito ahora que tengo un ratito más:


Para acelerar las consultas en SQL Server y en cualquier motor de base de datos debemos usar apropiadamente los índices


Las columnas que se aconseja indexar son:


– Las que son clave primaria o ajena


– Aquellas que se usan frecuentemente en búsquedas de rangos de valores con BETWEEN


– Aquellas que se usan frecuentemente en ordenaciones con ORDER BY


– Aquellas que se usan frecuentemente en cruces de tabla o JOIN


– Aquellas que se usan frecuentemente en agrupaciones con GROUP BY


 Tampoco se trata señores de ponerse a indexar todos los campos! No es oro todo lo que reluce pues penalizará el rendimiento de la base de datos
en las inserciones , actualizaciones y borrados por la cantidad de índices a mantener. De lo que se trata es de seleccionar las consultas que más se usan en nuestra aplicación todos los días y coger las más importantes y fijarse en la parte WHERE.


Es importante indicar que no merece la pena indexar campos con pocos valores como true, false, o 1,2,3 por ejemplo porque tienen poca selectividad y
una alta densidad de valores habitualmente.  También decir que solo puede haber un índice agrupado por tabla y hasta 249 índices no agrupados.


Hay otras consideraciones que se deben tener en cuenta como consultar el Plan de Ejecución de la consulta CTRL+L en el QueryAnalizer, os comento algunas más aunque alguno se ha adelantado 😉


– Usar procedimientos almacenados


– Usar la opción FILLFACTOR al crear el indice para envitar divisiones de página en las modificaciones si nuestra base de datos sufre muchas modificaciones.


– Usar DBCC SHOWCONTIG para ver la fragmentación de un índice y ver si merece la pena desfragmentarlo con DBCC INDEXDEFRAG


– Usar la opción WITH DROP EXISTING al crear el indice para no tener que eliminarlo y volver a crearlo


Os pongo algunas sentencias de ejemplo ilustrativas sobre la archiconocida NorthWind que seguro ayudarán a más de uno:


USE Northwind
DBCC SHOWCONTIG (nombre tabla,indice)


DBCC INDEXDEFRAG(credit, member, mem_no_CL)


USE ClassNorthwind
CREATE INDEX OrderID_ind
 ON Orders(OrderID)
 WITH PAD_INDEX, FILLFACTOR=10


Para encontrar duplicados antes de crear un índice único sobre la tabla products


SELECT ProductName, COUNT(ProductName) AS ‘# of Duplicates’
FROM Northwind.dbo.Products
GROUP BY ProductName
HAVING COUNT(ProductName)>1
ORDER BY ProductName


Creación del índice no agrupado único compuesto sobre 2 campos


Use ClassNorthwind
CREATE UNIQUE NONCLUSTERED INDEX U_LastName_FirstName
ON Employees (LastName, FirstName)


Para ver la fragmentación sobre la tabla member:


DBCC SHOWCONTIG (‘member’)


Para ver los índices y restricciones y espacio ocupado por los datos y por los índices: 


USE Northwind
EXEC sp_helpindex  Customers
EXEC sp_help  Customers
EXEC sp_spaceused products


Saludos


Sergio Vázquez


http://www.pangeaes.com/mutisdotnet


 


 

El university tour paso por Alicante

Esta mañana se pasó por Alicante el University Tour. Aunque apareció Murphy (no fallas cabrón, pobre Miguel ;-))  ha sido una experiencia inolvidable para todos.


La agenda fue la siguiente:



  • Introducción a .NET: Sergio Vázquez
  • ASP.NET y Atlas: Paco Vargas
  • WPF y Expressions: Paco Martínez
  • Dispositivos Moviles: Paco Martínez
  • XNA Game Studio: Miguel Llopis

Hemos pasado momentos muy buenos y agradables todos juntos y los asistentes se fueron contentos con su camiseta y Cd y muchas cosas nuevas e interesantes aprendidas de .NET e incluso los ponentes.En cuanto pueda pulblicaré algunas fotos.


Próxima cita…… Valencia y Castellón


Saludos


Sergio Vázquez


http://www.pangeaes.com/mutisdotnet


 


 

Estamos traduciendo al español la web oficial de ASP.NET

En coordinación con Redmond y el equipo de Scott Guthrie, después de hablar con el colega Scott Mitchell estamos traduciendo al español
todos los recursos para aprender disponibles actualmente en la versión inglesa en http://www.asp.net/ que saldrán próximamente para el comienzos del 2007 en http://www.asp.net/es/ para todos los lectores hispanos del mundo puedan incrementar sus conocimientos de desarrollo web con Visual Studio 2005, la mejor herramienta de desarrollo que he conocido. De momento ha sido traducida al francés y alemán recientemente.


Próximamente espero poder daros más detalles pero si quieres unirte a la iniciativa y traducir algún apartado, por pequeño que sea, estaremos encantados y puedes escribirme un email en la sección contacto del blog. Esperamos vuestra aportación! Gracias.


Saludos


Sergio Vázquez

Error la Cuenta ASPNET no puede acceder a la metabase de IIS

Despues de ver este error porque no esta registrada correctamente la version 2.0 del framework , la solución es sencilla. Debemos ir a la carpeta:


C:WINDOWSMicrosoft.NETFrameworkv2.0.50727 y desde alli ejecutar el siguiente comando:


 aspnet_regiis -ga ASPNET


Esto lo que va a hacer es conceder permisos de la metabase de iis a la cuenta ASPNet. Recordemos que la metabase es un fichero xml llamado
Machine.config similar al archifamoso Web.config pero que define los parámetros de todos los sitios web de mi servidor web. Lo podéis encontrar
por defecto en la siguiente ruta para la version 2.0 del framework aunque os puede dar un “mareo” al leerla 😉


 C:WINDOWSMicrosoft.NETFrameworkv2.0.50727CONFIG


Puedes encontrar más información aqui:


http://support.microsoft.com/?kbid=267904


Saludos


Sergio Vázquez