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


 

¿Por que no se ejecutan paginas asp.net en mi W2003 si ya tiene IIS 6!!?

Cuando no se ejecutan muy seguramente sea porque no tienes registrado el framework para el IIS aunque esté instalado por ejemplo porque se instaló el framework primero y luego IIS en tu Windows 2003 server.

 

Debes usar para ello el comando aspnet_regiis  -i -enable que te va a habilitar la ejecución de paginas asp.net y el mapeo de los

ficheros .aspx a la librería aspnet_isapi.dll que se va a encargar de manejar las peticiones http de dicha extensión de ficheros. Debes encontrarlo por defecto en la siguiente ruta  unidad de sistema:windowsmicrosoft.netFrameworkversion del framework

 

Tambien en tu sitio web tienes que dar permisos de lectura y ejecución (Ojo no de control ni modificar ) al usuario everyone para

poder ejecutar las paginas web .aspx de tu sitio web tanto a nivel de NTFS como Ejecución de scripts a nivel de IIS

 

Espero que os sirva para salir de algun apuro a más de uno.

 

Saludos

Sergio

Charlas gratuitas introducción .NET Alicante 12 Diciembre 2006

Estimados lectores


Vuelve el University Tour a la Politécnica de Alicante con charlas de nivel 100 para las personas que deseen iniciarse en .NET. Como alguno ya sabe estoy colaborando. Esta vez daré la charla de Introducción a .NET  donde hablaré de los recursos necesarios para iniciarse y la arquitectura interna de .NET, habrá camisetas y dvds con versiones express gratuitas de SQL  y Visual Studio y cursos para los asistentes.


Aqui teneis la url de registro y la agenda, podéis pasarselo a vuestros conocidos que quieren saber de que va esto como me ha comentado alguno.


Agenda:

10:00 – 10:30 Introducción a .NET .Sergio Vázquez

Presentación de Gusenet


10:30 – 11:30 ASP.NET / ATLAS WEB DEVELOPMENT. Rafael Vargas

Presentacion clubes .net


 

11:30 – 12:15 Interfaces 2D y 3D en aplicaciones (WPF) / Expressions Tool. Paco Martinez

 


————————————– DESCANSO

12:30 – 13:30 Desarrollo de aplicaciones para dispositivos móviles . Paco Martínez


Presentación de las becas MACH e Internship


13.30 – 14:30 Desarrollo de juegos con DirectX / XNA. Miguel Llopis

http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032310691&Culture=es-ES


Espero que os sea útil para alguno y vernos por allí 🙂


Saludos


Sergio Vázquez


http://geeks.ms/blogs/sergio/Default.aspx
http://www.pangeaes.com/mutisdotnet


 

¿Qué errores me corrige el SP1 de VS.Net 2003?

Por si no lo sabéis alguno, han empezado a distribuir el SP1 de VS 2003 este mes a los partners y está disponible desde el sitio web de MS para su descarga gratuita ya. Muchos desarrolladores web de ASP.NET sabemos que VS2003 da problemas en Vista de Diseño al cambiar desde vista de código o a veces no la muestra. Pues ese es uno de los errores mas deseados que se ha corregido. Podéis ver la lista completa aqui que contiene también los errores corregidos en VB.NET. También corrige el error de que las etiquetas META las mueve como más de alguno me habéis comentado. Os pongo aquí el artículo con la lista completa de errores corregidos traducida al castellano:


 http://support.microsoft.com/kb/918007/es


Sinceramente, Merece la pena instalarselos, os lo recomiendo 🙂


Saludos


Sergio

MARS y Paginación de datos en ADO.NET 2.0 (I) Una revolución en el rendimiento

No, No, MARS no significa que  somos «marcianos» o estamos en Marte 🙂 aunque a veces lo parezca o podamos estarlo cuando estamos tan abstraidos concentrados en nuestro código dandole a la tecla.


Al hilo del ultimo post de Jorge Serrano sobre datareader si se usa buffers o no, tengo que comentaros una cosa muy interesante de ado.net 2.0 que os puede ayudar mucho y podéis combinar con estos datareaders sin olvidar que es de 20 a 30 veces más rápido a la hora de leer un conjunto de datos secuenciales hacia delante que un DataSet por razones que muchos comprenderéis :


MARS: Multiple Active Recordsets. Es una característica nueva muy solicitada a los chicos de Redmond que sí permitía ADO (abrir varios recordsets sobre la misma conexión)pero no ADO.NET 1.x y que nos va a permitir tener acceso concurrente a más de un conjunto de resultados usando una misma conexión y siendo cada uno de ellos totalmente independiente como si usaran conexiones separadas con el consiguiente ahorro de recursos del servidor de base de datos.


Esto es muy interesante para aplicaciones web ASP.NET 2.0 y puede marcar una diferencia fundamental en el rendimiento de las mismas pudiendo además combinarse con comandos asíncronos nuevos en ado.net 2.0  que hacen uso de los métodos cmd.BeginExecuteREader y cmd.EndExecutereader. De hecho conozco desarrolladores que no pasaron de ADO a ADO.net 1.x solo por esta característica sin pararse a pensar en la penalización de rendimiento al tener que usarse COM Interop en ASP.NET cuando agregabamos una referencia a adodb.dll y usabamos aspcompat=true


Para poder usarlo hay que indicarlo en la cadena de conexion de SQL 2005 de la siguiente forma:


«Server=miservidor;Database=pubs;Trusted_Connection=True;MultipleActiveResultSets=true»


 Os dejo un artículo para que profundicéis con un ejemplo ilustrativo en c# y os recuerdo que no se puede usar en ADO.NET 1.x


http://www.devx.com/dbzone/Article/30132


Espero vuestros comentarios si os parece una mejora o revolución y os resulte interesante a todos.


En el próximo post hablaré sobre la nueva paginacion de datos 😉


Saludos


Sergio Vázquez
http://www.mutisdotnet.com

P.D: Si trabajas o vives cerca de Alicante, Almería, Murcia o Albacete y necesitas formación presencial en .NET, puedes contactarme
sin compromiso para un curso.


 

¿Como dirigir mejor equipos de desarrollo?

Yo siempre he dicho que el principal activo de una empresa es el mismo: El capital Humano,que te va a marcar las diferencias con respecto a la competencia claramente por encima de las metodologías de desarrollo o las métricas. Para ello deben estar motivados, formados y cualificados para su puesto de trabajo para poder rendir correctamente. Pero todo ello no siempre es suficiente, el empleado valora cada vez más la tranquilidad emocional en su puesto para poder estar centrado en su tarea y poder hacer su trabajo mejor dia a dia. Aquí van algunas ideas y reflexiones interesantes para directores de proyectos, fruto de mi experiencia y lecturas en diversos equipos en los ultimos 12 años:



  • Los empleados son personas, no máquinas y debes tratarlos como tales.

  • Todo el mundo quiere sentirse valorado, sea cual sea su puesto.

  • El feedback es necesario para poder mejorar de forma oportuna, específica y positiva.

  • Nada motiva mas a una persona que ser escuchada.

  • No hay que centrarse en los defectos de los empleados sino asignarles tareas para aprovechar sus fortalezas y formarlos para poder especializarse y adquirir poco a poco más responsabilidades.

  • Los profesionales son aquellos que mejor hacen su trabajo cuanto menos les apetecen trabajar

  • El liderazgo es el arte de conseguir que alguien haga los que quieres que haga porque quiere hacerlo.

  • No digas nunca cómo hacer las cosas, diles qué hacer y te sorprenderán

  • Ayudar a los trabajadores en momentos estresantes o de mucho trabajo, es una parte muy importante de un buen liderazgo

  • Los cerebros, como los corazones, van donde son apreciados

  • Si das por seguros a tus mejores empleados los puedes perder.

  • Se obtiene lo que se recompensa

  • No cuides a tus empleados, déjalos que se cuiden ellos.

  • Para el éxito a largo plazo , los empleados deben saber que los errores no penalizan negativamente.

  • Cuando la comunicación fluye de forma abierta, la gente es mejor que nunca!

  • Los empleados necesitan contactos cara a cara con su jefe, confianza, y disfrutar con su trabajo.

 


Sergio Vázquez


 


 

¿Como mejorar el rendimiento en ASP.NET con la caché de salida?

El Guille me invitó, con motivo del 10 aniversario de su sitio web a escribir un artículo en el apartado firmas invitadas  y acepté encantado el ofrecimiento 🙂

Se titula  Mejorando el rendimiento en ASP.NET con la directiva OutputCache y podéis verlo en esta dirección :

http://www.elguille.info/NET/ASPNET/firmas_sergio_Cache_ASP_NET.htm

Espero que os sea de utilidad a mas de uno.

Saludos

Sergio