Velocidad de las consultas en sql server

Tengo un proceso que realiza búsquedas en dos tablas y dependiendo de si existen los datos buscados actualiza sus valores o los crea nuevos, estas búsquedas se realizan con el método SEEK de DAO (en una base de datos access). Luego he pasado esta base de datos a sql sever 7.0 (con sus indices,
relaciones, etc) y he adaptado ese proceso para que realice esas búsquedas
con consultas sql con el método EXECUTE y método OPEN de ADO, pero aunque tengo definidos bien los indices, y aunque el analizador de consultas de
sql server me dice que no se puede mejorar el rendimiento de la consulta, tarda bastante más en ejecutarse el proceso de esta última manera y con sql server
que con el seek en access. ¿Podrías decirme como agilizar el proceso en sql server?

2 Respuestas

Respuesta
1
Por lo que comentas no creo que el problema este en el rendimiento de la consulta en SQL Server sino en la comunicación con VB y la forma que has implementado la solución, lo mejor seria trasladar la lógica de la aplicación (que realiza búsquedas en dos tablas y dependiendo de si existen los datos buscados actualiza sus valores o los crea nuevos) al servidor mediante el uso de Procedimientos Almacenados o sea crear un SP al que le pasas los parámetros necesarios y este se encarga de comprobar la existencia de esos datos y actualizarlos o insertarlos según sea necesario. Si no pudieras usar Procedimientos Almacenados, lo único que te puedo sugerir es que compruebes el tipo de cursor que estas creando al abrir los Recordsets y que trates de usar siempre el cursor predeterminado de ADO y hacer las actualizaciones enviando consultas SQL.
Respuesta
  • Optimización de índices:

    • Asegúrate de tener índices adecuados en las columnas que utilizas para búsquedas y uniones.
    • Considera los índices compuestos si las búsquedas involucran múltiples columnas.
  • Estadísticas de la base de datos:

    • Mantén las estadísticas actualizadas para que el optimizador de consultas tenga la mejor información disponible. Puedes hacerlo con el comando: UPDATE STATISTICS table_name;

O con:sp_updatestats;

  • Consultas eficientes:

    • Revisa las consultas para asegurarte de que están bien optimizadas.
    • Evita las consultas con subconsultas innecesarias y las consultas anidadas que puedan ser simplificadas.
    • Usa JOINs en lugar de subconsultas cuando sea posible.
  • Uso de Transacciones:

    • Asegúrate de que las transacciones estén bien gestionadas. Mantén las transacciones lo más cortas posible para evitar bloqueos y esperas.
    • Usa transacciones solo cuando sea necesario y asegura que se completen o reviertan rápidamente.
  • Técnicas de Batch Processing:

    • Considera procesar datos en lotes más pequeños en lugar de grandes cantidades de datos de una sola vez. Tiny Fishing
    • Usa técnicas como el batch update o batch insert para manejar grandes volúmenes de datos de manera más eficiente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas