Un foro de discusión para nuestra comunidad de hispano hablante
By cmoreno
#826636
buen día.

tengo un problema urgente, tengo unas cajas de texto que dependen de los valores en unas listas

las listas tienen unas consultas de esta manera

Lista 1 (@@tipoCheck):
Code: Select all
SELECT DISTINCT `Nivel I`,`Nivel I` FROM @#atemp  
@#atemp <- el nombre de una tabla temporal creada en un trigger antes del inicio del formulario

Lista 2(@@lineaCheck):
Code: Select all
SELECT `CMínimo` FROM @#atemp 
WHERE  (`Nivel I` like (CONCAT('%', @@tipoCheck, '%')))  AND (`Tipo` like (CONCAT('%',@@tipoGCheck, '%'))) AND
(`Producto` like (CONCAT('%', @@lineaCheck)))
Lista 3:
Code: Select all
SELECT `TMínima` FROM @#atemp 
WHERE  (`Nivel I` like (CONCAT('%', @@tipoCheck, '%')))  AND (`Tipo` like (CONCAT('%',@@tipoGCheck, '%'))) AND
(`Producto` like (CONCAT('%', @@lineaCheck)))

Caja de Texto 1:
Code: Select all
SELECT `MMáximo` FROM @#atemp 
WHERE  (`Nivel I` like (CONCAT('%', @@tipoCheck, '%')))  AND (`TipoG` like (CONCAT('%',@@tipoGCheck, '%'))) AND
(`Producto` like (CONCAT('%', @@lineaCheck)))
Las consultas funciona bien, sin embargo son excesivamente lentas, retire las consultas sobre la caja de texto para pruebas y se siente la interfaz mas fluida sin embargo colocando la se tarda 8 sec. en procesar el resultado (mostrarlo)

este query dentro de la base de datos haciendo le directo se tarda aprox. 0.0013 sec. es mas que instantaneo.

utilizando suggestbox (sugerencia) no cambia el resultado.

necesito agilizar esto, estoy haciendo esto en un servidor de PM 3.3.6-community sobre una instalación de bitnami.
User avatar
By amosbatto
#826638
¿Cuantas filas tienes un tu tabla atemp ?

En tu Dynaform, puedes crear un campo de texto con la variable "sql" que contiene el query de SQL. En el trigger antes de la Dynaform puedes setear la variable "sqlTabla". Por ejemplo:
$miVariable = addslashes(@@otraVariable);
@@sqlTabla = "SELECT CAMPO_X, CAMPO_Y, CAMPO_Z FROM TABLA_A WHERE CAMPO_B = '$miVariable'";

Entonces, los queries serían:
SELECT DISTINCT T.CAMPO_X, T.CAMPO_X FROM (@#sqlTabla) AS T

SELECT T.CAMPO_Y FROM (@#sqlTabla) AS T
WHERE (T.CAMPO_X like (CONCAT('%', @@tipoCheck, '%'))) AND (`Tipo` like (CONCAT('%',@@tipoGCheck, '%'))) AND
(T.CAMPO_Z like (CONCAT('%', @@lineaCheck)))


Tiene que repetir los queries muchas veces, pero probablemente serían más rápido. Tambien puedes tratar de crear una tabla temporal en MySQL, pero creo que cada query es una nueva sesión de MySQL, entonces no creo que puede funcionar.

Otra posibilidad es crear nuevos endpoints de REST en un plugin para realizar tus queries. Ver:
https://www.pmusers.com/index.php/Extra ... rest.2Fsql
By cmoreno
#826639
amosbatto wrote: Mon Sep 23, 2019 6:26 pm ¿Cuantas filas tienes un tu tabla atemp ?

En tu Dynaform, puedes crear un campo de texto con la variable "sql" que contiene el query de SQL. En el trigger antes de la Dynaform puedes setear la variable "sqlTabla". Por ejemplo:
$miVariable = addslashes(@@otraVariable);
@@sqlTabla = "SELECT CAMPO_X, CAMPO_Y, CAMPO_Z FROM TABLA_A WHERE CAMPO_B = '$miVariable'";

Entonces, los queries serían:
SELECT DISTINCT T.CAMPO_X, T.CAMPO_X FROM (@#sqlTabla) AS T

SELECT T.CAMPO_Y FROM (@#sqlTabla) AS T
WHERE (T.CAMPO_X like (CONCAT('%', @@tipoCheck, '%'))) AND (`Tipo` like (CONCAT('%',@@tipoGCheck, '%'))) AND
(T.CAMPO_Z like (CONCAT('%', @@lineaCheck)))


Tiene que repetir los queries muchas veces, pero probablemente serían más rápido. Tambien puedes tratar de crear una tabla temporal en MySQL, pero creo que cada query es una nueva sesión de MySQL, entonces no creo que puede funcionar.

Otra posibilidad es crear nuevos endpoints de REST en un plugin para realizar tus queries. Ver:
https://www.pmusers.com/index.php/Extra ... rest.2Fsql


buen dia.

Muchas gracias por su pronta respuesta, la tabla tiene al rededor de 350 registros como máximo (regla) puede tener hasta 400, intentare la sugerencia de cargar antes del trigger y regreso luego a comentar el resultado.

Gracias :)

A 1xbet clone script is a pre-designed software so[…]

4rabet clone script is enabling entrepreneurs to e[…]

Parimatch clone script is enabling entrepreneurs t[…]

In the world of cryptocurrency, a wallet is an app[…]