
Bases relacionales en MySQL
Publicado por VICTOR PEREZ (137 intervenciones) el 16/03/2013 22:35:41
Hola,
En VFP usamos las bases de datos o tablas relacionales mediante el comando SET RELATION to, abriendo primero la tabla y teniendo un campo en comun (indexado) con la tabla a la que nos vamos a relacionar.
Bueno, en mi migracion hacia MySQL, tengo que usar relaciones pero ...por ejemplo, abrir una tabla como la de pacientes, que tiene unos 31,000 registros solo para relacionarla con otra base de datos que controla la atencion diaria de los pacientes y que puede tener unos 50 registros maximos por dia, le toma al sistema mucho llenar el cursor que lleno al abrir la tabla de pacientes.
Lo estoy haciendo asi
Para mi programa, ya busque una mejor manera de hacer las cosas..pero si me gustaria saber como debo hacer las relaciones entre bases que son muy grandes.
Para resolver mi problema lo que hice fue lo siguiente;
Esto me llena el cursor Almpat con la informacion del campo Almct.lastorder que lo necesito para saber cuando fue la ultima vez que se facturó al paciente y conocer si el paciente atendido en la fecha ya fue facturado o no.
Sugerencias,,,, Bienvenidas...
En VFP usamos las bases de datos o tablas relacionales mediante el comando SET RELATION to, abriendo primero la tabla y teniendo un campo en comun (indexado) con la tabla a la que nos vamos a relacionar.
Bueno, en mi migracion hacia MySQL, tengo que usar relaciones pero ...por ejemplo, abrir una tabla como la de pacientes, que tiene unos 31,000 registros solo para relacionarla con otra base de datos que controla la atencion diaria de los pacientes y que puede tener unos 50 registros maximos por dia, le toma al sistema mucho llenar el cursor que lleno al abrir la tabla de pacientes.
Lo estoy haciendo asi
1
2
3
4
5
6
7
8
9
10
11
12
THISFORM.CONECTA
SQLEXEC(LNHANDLE,"SELECT * FROM PATIENT","ALMCT") && ESTO ES LO QUE TOMA TIEMPO
Sele almCT
INDEX ON CODIGO TAG Codigo
THISFORM.CONECTA
SQLEXEC(LNHANDLE,"SELECT * FROM PATATEND","ALMPAT")
SQLDISCONNECT(LNHANDLE)
SELECT ALMPAT
SET RELATION TO CODIGO INTO ALMCT ADDITIVE
Para mi programa, ya busque una mejor manera de hacer las cosas..pero si me gustaria saber como debo hacer las relaciones entre bases que son muy grandes.
Para resolver mi problema lo que hice fue lo siguiente;
1
2
3
4
5
6
7
8
9
10
11
12
Sele AlmPat
THISFORM.CONECTA
DO WHILE !EOF()
SQLEXEC(LNHANDLE,"SELECT LASTORDER FROM PATIENT WHERE CODIGO=?ALMPAT.CODIGO","ALMCT")
SELECT ALMPAT
REPLACE LASTORDER WITH ALMCT.LASTORDER
SKIP
ENDDO
SQLDISCONNECT(LNHANDLE)
Esto me llena el cursor Almpat con la informacion del campo Almct.lastorder que lo necesito para saber cuando fue la ultima vez que se facturó al paciente y conocer si el paciente atendido en la fecha ya fue facturado o no.
Sugerencias,,,, Bienvenidas...
Valora esta pregunta


0