Cómo optimizar comandos SELECT de SQL mediante la cláusula FORCE y SYS(3054) en Visual FoxPro 5.0 y versiones posteriores

Seleccione idioma Seleccione idioma
Id. de artículo: 155788 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

Resumen

Microsoft Visual FoxPro 5.0 y versiones posteriores tienen una nueva cláusula, la cláusula FORCE, en SELECT - comando SQL. Puede utilizar la cláusula FORCE para omitir la optimización de consulta predeterminada que realiza Visual FoxPro.

La cláusula FORCE especifica que las tablas están combinadas en el orden en que aparecen en la cláusula FROM. Si se omite la cláusula FORCE, Visual FoxPro intenta optimizar la consulta. Sin embargo, Visual FoxPro podría ejecutar la consulta de más rápido, incluyendo la cláusula FORCE para deshabilitar la optimización de consultas de Visual FoxPro.

Más información

Cuando se procesa una instrucción SQL, el optimizador SQL determina la forma más eficaz de combinar las tablas. Hay veces cuando adquiere un mejor conocimiento de las estructuras de datos de FoxPro. La cláusula FORCE, indica Visual FoxPro que se ha optimizado la instrucción SQL SELECT y que no es necesario que más ha cambiado.

Para utilizar la cláusula FORCE, debe utilizar la sintaxis de combinación ANSI dentro de la cláusula FROM. Las condiciones en la cláusula WHERE no están sujetos a la cláusula FORCE. Cuando se coloca la cláusula FORCE, es global para todas las combinaciones enumeradas. El orden en que aparecen las tablas de unión en la instrucción es el orden en que se unen. Las instrucciones siguientes, por lo tanto, pueden producir resultados de rendimiento diferentes:
   OPEN DATABASE HOME(2)+"\data\testdata"
   SELECT * ;
   FROM FORCE customer JOIN(orders JOIN orditems ;
   ON orditems.order_id=orders.order_id) ;
   ON orders.cust_id=customer.cust_id

   SELECT * ;
   FROM FORCE customer JOIN orders ;
   ON orders.cust_id=customer.cust_id ;
   JOIN orditems ;
   ON orditems.order_id=orders.order_id
				
en la primera instrucción SQL SELECT, se unen las tablas orders y orditems y se une el resultado a la tabla cliente. En la segunda instrucción, la tabla de clientes se combina con la tabla orders por primera vez. El resultado a continuación, se combina con la tabla orditems.

Para tomar la decisión para forzar una condición de combinación, puede utilizar la función SYS(3054) para determinar el alcance a la que se optimiza la consulta mediante tecnología Rushmore. Por ejemplo, puede emitir el comando siguiente antes de la instrucción SQL SELECT para determinar el plan de optimización interno de la consulta:
   ? SYS(3054,1)
   SELECT * FROM customer JOIN orders;
   ON customer.cust_id=orders.cust_id ;
   WHERE UPPER(country)="USA"
				
SYS(3054) devuelve información, como la etiqueta de índice que se utiliza para optimizar la combinación, así como el nivel de optimización para cada tabla, ya sea 'completa,' 'partial' o 'none'.

A veces, puede determinar el mejor nivel de optimización versión de prueba y error. Intente ejecutar la instrucción SQL SELECT con y sin la cláusula FORCE para ver si hay un cambio significativo en el rendimiento. Asegúrese de desactivar el entorno de entre las instrucciones SQL SELECT para que el almacenamiento en caché no afecta el resultado de consultas sucesivas.

Propiedades

Id. de artículo: 155788 - Última revisión: viernes, 21 de febrero de 2014 - Versión: 3.4
La información de este artículo se refiere a:
  • Microsoft Visual FoxPro 5.0 Standard Edition
  • Microsoft Visual FoxPro 6.0 Professional Edition
  • Microsoft Visual FoxPro 7.0 Professional Edition
  • Microsoft Visual FoxPro 8.0 Professional Edition
  • Microsoft Visual FoxPro 9.0 Professional Edition
Palabras clave: 
kbnosurvey kbarchive kbmt kbdatabase kbhowto kbsqlprog KB155788 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): 155788

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