Información sobre rendimiento consulta en una base de datos de Access

Seleccione idioma Seleccione idioma
Id. de artículo: 209126 - Ver los productos a los que se aplica este artículo
Moderada: Requiere macro básico, codificación y las capacidades de interoperabilidad.

Este artículo se aplica únicamente a las bases de datos de Microsoft Access (.mdb).

Para obtener una versión de Access 97 de este artículo, consulte 112112.
Expandir todo | Contraer todo

En esta página

INTRODUCCIÓN

Este artículo describe cómo optimizar el rendimiento de consulta en Microsoft Access 2000, en Microsoft Access 2002 y en Microsoft Office Access 2003. Se incluyen los siguientes temas:
  • Optimizador de consultas para el motor de base de datos Microsoft Jet
  • Tiempo de consulta
  • Analizar el rendimiento
  • Sugerencias para mejorar el rendimiento de consulta
En este artículo se supone que la base de datos tiene tablas locales en lugar de tablas vinculadas (o adjuntas). Si las tablas están vinculadas, esta información se aplica todavía. Sin embargo, existen problemas adicionales que afectan a la consulta de rendimiento con tablas vinculadas. Para obtener más información sobre cómo mejorar el rendimiento con tablas vinculadas, puede buscar Microsoft Knowledge Base utilizando la cadena siguiente:
ODBC y optimizar y tablas

Más información

Optimizador de consultas para el motor de base de datos Microsoft Jet

El motor de base de datos Jet contiene varios componentes, pero el componente más importante para las consultas (y más compleja) es el optimizador. El Optimizador está costo basado en. Esto significa que el optimizador asigna un costo de tiempo para cada tarea de consulta y, a continuación, elige la menos costosa lista de tareas para realizar que genera el conjunto de resultados deseado. El ya una tarea tarda en realizar, es el más caro de esa tarea.

Para decidir qué estrategia de consulta para utilizar, el optimizador utiliza estadísticas. Los factores siguientes son algunos de los factores que se basan estas estadísticas:
  • El número de registros en una tabla
  • El número de páginas datos en una tabla
  • La ubicación de la tabla
  • Si están presentes los índices
  • Los índices son cómo único
Según estas estadísticas, el optimizador, a continuación, seleccionará la estrategia mejor la consulta interna para tratar con una consulta determinada.

Las estadísticas se actualizan cada vez que se compila una consulta. Una consulta se marca para compilar al guardar los cambios para la consulta (o sus tablas subyacentes) y cuando se compacte la base de datos. Si se ha marcado una consulta para compilar, la compilación y la actualización de estadísticas se produce la próxima vez que se ejecuta la consulta. Compilar normalmente toma de segundo de uno a cuatro segundos.

Si agrega un gran número de registros a la base de datos, debe abrir y, a continuación, guardar las consultas para volver a compilar las consultas. Compile de por ejemplo, si diseña y, a continuación, probar una consulta mediante un pequeño conjunto de datos de ejemplo, debe nuevo la consulta después de agregan registros adicionales en la base de datos. Al hacerlo, desea asegurarse de que el rendimiento de consulta óptimo se consigue cuando su aplicación está en uso.

Nota No se puede ver combinaciones de optimización de motor de Jet base de datos y no se puede especificar cómo optimizar una consulta. Sin embargo, puede utilizar al Documentador de base de datos para determinar si están presentes los índices y cómo único es de un índice.

Para obtener más información acerca del problema que puede producirse al utilizar el Documentador de base de datos de Access 2000, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
207782ACC2000: Error con la base de datos Documentador si objetos abiertos

Tiempo de consulta

Hay dos medidas de tiempo significativo para una consulta de selección:
  • Tiempo para mostrar la primera pantalla de datos
  • Tiempo para obtener el último registro
Si una consulta devuelve sólo una pantalla de datos, estos dos tiempo las medidas son los mismos. Si una consulta devuelve muchos registros, pueden ser muy diferentes estas medidas de tiempo.

Si las dos medidas son los mismos cuando ve una consulta de selección en la vista Hoja de datos, verá una pantalla de datos y un número total de registros devueltos por la consulta, como por ejemplo, "Registro 1 N. Si es más rápido para que el motor de base de datos Jet mostrar la primera pantalla de datos que para completar la consulta y, a continuación, recuperar el último registro, verá una pantalla de datos pero no N en "Registro 1 N. El valor de N es en blanco hasta que finalice la consulta, o hasta que desplácese hacia abajo hasta el último registro.

Este comportamiento es el resultado del motor de base de datos Jet seleccionando una de dos estrategias de rendimiento de:
  • Completar la consulta y, a continuación, mostrar datos
  • Mostrar datos y, a continuación, completar la consulta
No se puede controlar la estrategia que se utiliza. El motor de base de datos de Jet selecciona la estrategia es más eficaz.

Analizar el rendimiento

Si utiliza Microsoft Access 7.0, Access 97, Access 2000, Access 2002 o Access 2003, puede utilizar el Analizador de rendimiento para analizar consultas en la base de datos. Porque el análisis de rendimiento de la consulta está estrechamente vinculado al motor de base de datos Jet, el Analizador de rendimiento sugiere agregar índices sólo cuando los índices realmente se utilizará el motor de base de datos Jet para optimizar la consulta. Esto significa que el Analizador de rendimiento puede proporcionar sugerencias de rendimiento que son más específicos de la base de datos de las sugerencias generales enumeradas a continuación en la sección "Sugerencias para mejorar el rendimiento de consulta".

Para ejecutar el Analizador de rendimiento en Access 7.0, en Access 97, en Access 2000, en Access 2002 o en Access 2003, siga estos pasos:

En el menú Herramientas , haga clic en analizar y, a continuación, haga clic en rendimiento .

Sugerencias para mejorar el rendimiento de consulta

Para mejorar el rendimiento de la consulta, pruebe estas sugerencias:
  • Compactar la base de datos

    Al compactar la base de datos puede acelerar las consultas. Al compactar la base de datos, los registros de la tabla se reorganizan para que los registros residen en páginas adyacentes de la base de datos que se ordenan por la clave principal de la tabla. Esto mejora el rendimiento de las exploraciones secuenciales de registros de la tabla porque sólo el número mínimo de páginas de base de datos ahora tiene que leerse para recuperar los registros que desee. Después de compactar la base de datos, ejecute cada consulta para compilar la consulta de manera que cada consulta ahora tendrán las estadísticas actualizadas de la tabla.
  • Indizar un campo

    Cualquier campo que se utiliza para establecer criterios para los campos de consulta y los campos de índice en ambos lados de una combinación de índice. O bien, crear una relación entre estos campos. Cuando se crea una relación con la integridad referencial obligatoria, el motor de base de datos Jet crea un índice en la clave externa, si ya no existe. En caso contrario, el motor de base de datos Jet utiliza el índice existente.

    Nota El motor de base de datos Jet optimiza automáticamente una consulta que combine una tabla de Access en el disco duro y una tabla de servidor ODBC si el acceso a tabla es pequeña y si los campos combinados están indizados. En este caso, Access mejora su rendimiento solicitando sólo los registros necesarios desde el servidor. Asegúrese de que las tablas que combina desde orígenes distintos están indizadas en los campos de combinación.
  • Seleccione el tipo de datos menor que es adecuado

    Cuando define un campo en una tabla, seleccione el tipo de datos más pequeño que es adecuado para los datos en el campo. Además, asegúrese de que los campos que va a utilizar en combinaciones tienen los tipos de datos compatible, como Autonumérico y numérico o mismos tipos de datos (si la propiedad tamaño del campo se establece en Entero largo ).
  • Agregue sólo los campos que debe tener

    Cuando crea una consulta, agregue sólo los campos que debe tener. En campos que se utilizan para establecer criterios, haga clic para desactivar la casilla de verificación Mostrar si no desea presentar esos campos.
  • Guardar la instrucción SQL como una consulta

    Si se establece la propiedad RecordSource para un formulario o informe en una instrucción SQL, guarde la instrucción SQL como una consulta y, a continuación, establezca la propiedad RecordSource en el nombre de la consulta.
  • Evite los campos calculados

    Evite los campos calculados en subconsultas. Si agrega una consulta que contenga un campo calculado a otra consulta, la expresión en el campo calculado puede disminuir el rendimiento en la consulta de nivel superior. En el ejemplo siguiente, la consulta Q1 se utiliza como la entrada de la consulta Q2:
    P1: SELECT IIF([MyColumn]="Yes","Order Confirmed","Order Not Confirmed") AS X FROM MyTable;
    C2: SELECT * FROM t1 WHERE X = "Pedido confirmado";
    Como no se puede optimizar la expresión IIF en C1, C2 también se puede optimizar. Si una expresión que no se puede optimizar se anida en una subconsulta, se puede optimizar todos la consulta.

    Forma alternativa de construir la consulta es:
    P1: SELECT * FROM MyTable WHERE MyColumn = "Sí";
    Si las expresiones son necesarias en el resultado, intente colocar las expresiones en un control en un formulario o en informe. Por ejemplo, puede cambiar la consulta anterior a una consulta de parámetros que pide el valor de MiColumna y, a continuación, basar un formulario o un informe en la consulta. En el formulario o en el informe, a continuación, puede agregar un control calculado que muestra "Hola" o "Goodbye", dependiendo del valor de MiColumna.

    Construir la consulta como sigue:
    PARAMETERS [para ver pedidos confirmados, escriba Sí. Para ver pedidos no confirmados, escriba no.] Texto;
    SELECCIONE *
    FROM MyTable
    WHERE MyColumn = [para ver pedidos confirmados, escriba Sí. Para ver pedidos no confirmados, escriba Nº];
    En el control calculado del formulario o informe, escriba:
    = IIF([MyColumn]="Yes","Order Confirmed","Order Not Confirmed")
  • Especificar Agrupar por

    Cuando se agrupan registros por los valores de un campo combinado, especifique Agrupar por para el campo está en la misma tabla como el campo está totalizando (calculando un agregado sobre). Por ejemplo, en la base de datos de ejemplo Neptuno.mdb, si crea una consulta de totales en el campo cantidad de los grupos por OrderID, tabla Order Details y, a continuación, puede especificar Agrupar por en el campo IdPedido de Order Details tabla. Si se especifica GROUP BY para el campo OrderID en la tabla Pedidos, Access debe unirse primero todos los registros y realice el agregado, en lugar de realizar el agregado y, a continuación, unirse a solamente los campos necesarios.

    Para tener mayor velocidad, utilice Agrupar por en tan pocos campos como sea posible. Como alternativa, utilice la función primero si puede.

    Si una consulta de totales incluye una combinación, considere agrupar los registros de una consulta y, a continuación, agregar esta consulta a una consulta independiente que realiza la combinación. Al hacerlo, puede mejorar el rendimiento con algunas consultas.
  • Evite los criterios de consulta restrictivos

    Si es posible, evite criterios de consulta restrictivos en campos calculados y en los campos no indizados. Utilizar expresiones de criterios que se pueden optimizar.
  • Probar el rendimiento de consulta en un campo que se utiliza en una combinación entre tablas

    Si utiliza criterios para restringir los valores de un campo que se utiliza en una combinación entre tablas con una relación uno a varios, pruebe si la consulta se ejecuta más rápido con los criterios colocados en el lado "uno" o en el lado "varios" de la combinación. En algunas consultas, puede observar un rendimiento más rápido agregando los criterios al campo en el lado "uno" de la combinación en lugar de en el lado "varios" de la combinación.
  • Campos de ordenación de índice

    Indice los campos que usar para ordenar.
  • Utilice consultas de creación de tabla para crear tablas

    Si los datos cambian raramente, utilice consultas de creación de tabla para crear tablas en los resultados de consulta. Utilice las tablas resultantes en lugar de consultas como base para sus formularios, los informes u otras consultas de sus. Asegúrese de que agrega índices de acuerdo con las instrucciones que leer en este artículo.
  • Evite utilizar funciones agregado de dominio

    Evite utilizar funciones agregado de dominio, como la función DBúsq para tener acceso a datos de una tabla que no está en la consulta. Funciones de agregado de dominio son específicas de Access, y esto significa que el Jet motor de base de datos no puede optimizar las consultas que utilizan funciones agregadas de dominio. En su lugar, agregue la consulta a la tabla que estaba teniendo acceso la función o cree una subconsulta.
  • Utilizar encabezados de columna fijo

    Si está creando una consulta de referencias cruzadas, utilice encabezados de columna fijos siempre que sea posible.
  • Utilizar operadores

    Utilice el operador Entre... Y , el operador in y = operador en campos indizados.
  • Optimizar el rendimiento del servidor

    Para consultas de actualización de forma masiva en orígenes de datos ODBC, optimice el rendimiento en el servidor estableciendo la propiedad FailOnError en Sí.

Referencias

Para obtener más información sobre cómo optimizar el rendimiento en Microsoft Access 2000, haga clic en Ayuda de Microsoft Access en el menú Ayuda , escriba optimizar el rendimiento en el Ayudante de Office o el Asistente para Ayuda y, a continuación, haga clic en Buscar para ver el tema.
Para obtener más información acerca de cómo optimizar el rendimiento en Microsoft Access 2002, haga clic en Ayuda de Microsoft Access en el menú Ayuda , escriba mejorar el rendimiento de un acceso base de datos en el Ayudante de Office o el Asistente para Ayuda y haga clic en Buscar para ver el tema.

Para obtener más información sobre cómo mejorar el rendimiento en Access 2003, haga clic en Ayuda de Microsoft Office Access en el menú Ayuda , escriba mejorar el rendimiento de una base de datos en el que Buscar del panel de Ayuda y, a continuación, haga clic en Iniciar búsqueda para ver el tema.

Para obtener más información acerca del uso de índices en Access 2000, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
209564ACC2000: Índices compuestos deben restringir el primer campo indizado

Propiedades

Id. de artículo: 209126 - Última revisión: miércoles, 28 de noviembre de 2007 - Versión: 2.5
La información de este artículo se refiere a:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
Palabras clave: 
kbmt kbquery kbhowto kbperformance kbinfo kbusage KB209126 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 209126

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com