El tiempo de que tarda en ejecutar una cosulta y devolverla a nuestro programa a veces puede ser una tarea ardua, con tiempos de espera bastante elevados, dependiendo de los casos muchas veces nos encotramos que una consulta aparentemente sencilla se nos demora más de 5 sergundos. si tomamos este tiempo como referencia, en consultar un dato , la experiencia para el usuario es mala, por que el sistema es lento.
Para poder solventar parte del problema podemos utilizar la clausula with(nolock) dentro de nuestras consultas y o vistas de SQL, como lo hacemos?.
Pues muy sencillo , lo unico que debemos hacer es añadir la clausula al final de cada tabla como en el ejemplo:
1 |
select * from mitabla with(nolock) |
Si tuvieramos varias tablas quedaría así:
1 |
select mitabla1.campo1,mitabla2.campo1 from MiTabla1 with(nolock) inner join MiTabla2 with(nolock) on MiTabla1.ID = MiTabla2.id |
¿Qué debemos tener en cuenta si utlizamos esto?
Lo que debemos saber es esta cláusula no bloquea la tabla ni los datos para ejecutar la consulta, esto a veces puede darnos problema en la integridad de la consulta si hay datos que se están sobreescribiendo continuamente.
¿Dónde lo situo?
Pues bien, si sabemos que no bloquea la tabla y que los datos pueden estar siendo escritos en ese momento, debemos situar el with(nolock) en las tablas maestras, y no en las relacionadas que puedan ser sobreescritas continuamente, ya que las tablas maestras es poco frecuente que se sobreescriban datos.
Para saber si esto nos resulta de ayuda os recomiendo utilizar el SQL PROFILER como guia para ver los tiempos de ejecución
Bien
Me sirvio Muchas Gracias 🙂