7 consejos para acelerar tus consultas SQL

Aquí os dejo algunos detalles que seguro mejorarán el rendimiento de vuestras queries:

1) Usa Case cuando sea siempre posible: en Selects, Updates, etc.

2) No reutilizar algún código "parecido" a la consulta que queremos diseñar a ciegas. Sólo cuando realmente tenga sentido.

3) Usa sólo las tablas que necesitas en tu query. Un consejo "de perogrullo" pero es que a veces nos empeñamos...

4) No hagas double-dip. Sí, eso es, una consulta debe diseñarse para hacer una única cosa, no varias tareas a la vez. Recuerda el principio KISS (Keep It Simple, Stupid!).

5) Usar tablas temporales sólo cuando sean necesarias, y no como sustitutivo de cualquier subconsulta.

6) Obtén datos al principio de cada etapa. Será fácil ganar en rendimiento, pero también más propenso a errores si se hace sin cuidado. ¡Ojo!.

7) Haz Deletes y Updates en lotes.  En los dos sentidos,¿vale?. O sea, si hay que hacer una actualización y/o borrado de gran tamaño divide en lotes más pequeños, y si hay muchas actualizaciones o borrados pequeños (es decir, individuales) ejecútalos en lotes.

8 comentarios :

  1. joseeee a ver si vuelves a aprender a hablar en españolll!!! porque creo que el unico que te he entendido es el 7 y no estoy al 100%segura jejejeje

    ResponderEliminar
  2. Es verdad Angy: la excusa es que hay que decir estas cosas en "espanglish", no hay otra...jejeje...y como uno no domina ni el english ni el pitinglish, pues sale algo "raro" como ésto: un poco de cada idioma y al final ni el que escribe se entera, jejeje. Saludos.

    ResponderEliminar
  3. hola
    tengo una duda con el numero 6 estoy haciendo un programa para facturacion en vb.net 2008 y sql server 2008 y manejo 3 tablas una para facturas otra para los datos de las facturas y otra de clientes,entonces mi duda es si cargo todas las tablas desde un principio en mi programa o las cargo solo cuando las ocupe??

    gracias saludos

    ResponderEliminar
  4. Hola, en principio desconozco si usas el modelo ADO.NET u otro tipo de acceso a los datos. Podría ayudarte mejor si me adjuntas cómo estás accediendo a las tablas. No obstante si usas un modelo "desconectado", fíjate que los datos son volcados a memoria cuando se consultan (ten en cuenta esto, puede ser importante en rendimiento), luego los tratas y finalmente escribes en la database. Lo importante, entiendo, es que manejes los registros afectados en cada consulta y no tablas completas, es decir, recuperes la información estrictamente necesaria en cada punto de tu código. Un saludo.

    ResponderEliminar
  5. hola de gracias por la respuesta, como te daras cuenata soy novato en todo esto asi que tengo muchas dudas pero como me conecto y cargo la tabla es de esta forma
    sSel="select * from mitabla"
    sCnn="cadena de coneccion"
    da = New SqlDataAdapter(sSel, sCnn)
    dt = New DataTable
    da.Fill(dt)
    Dim dr As DataRow = dt.Rows(fila)

    entonces como dices estaria incorrecto por que yo estoy cargando toda la tabla al inicio y pues entonces seria solo lo que necesite verdad?

    gracias saludos

    ResponderEliminar
  6. Hola Omar, perdona por la tardanza en responderte pero el final de semana laboral fue duro :-). Espero te sea de ayuda lo que te voy a comentar. Te paso un ejemplo típico con DataSets (la principal ventaja de los DataSet es que puedes contener en ellos datos de más de una tabla: facturas, clientes, etc):

    Dim sConnString As String = “Persist Security Info=False;” &
    “User ID=sa;Initial Catalog=Northwind;” &
    “Data Source=MYSERVER”
    Dim con As SqlConnection = new SqlConnection(sConnString)
    con.Open() 'Abro conexión
    Dim SQL As String = “SELECT CompanyName FROM Customers”
    Dim Adaptador As new SqlDataAdapter()
    Dim miDataSet As New DataSet()
    Adaptador.SelectCommand = new SqlCommand(SQL, con)
    Adaptador.Fill(miDataSet)
    conn.Close() 'Por último me desconecto

    Mi principal consejo, como te decía en anteriores posts, es que si sabes seguro que en el Form correspondiente vas a modificar un "id" de tu tabla, hagas tu función que actualice, borre o inserte ese id y como tal lo pongas en la misma sentencia SQL en vez de cargar toda la tabla (select * from tabla). Un saludo.

    ResponderEliminar
  7. ok muy bien graciass, voy a probar con estos nuevos consejosss

    saludos

    ResponderEliminar
  8. Encantado de ayudarte. Por aquí estaremos para lo que necesites. En breve publicaré algunos artículos sobre acceso a bases de datos desde .NET. Un abrazo.

    ResponderEliminar

Buscar en el Blog: