Encuentro natural al usar dos veces la misma tabla
Bueno aquí me tiene de nuevo con otra consulta. Utilizo firebird 2.5. Explico mi duda
Trabajo en una distribuidora de gases industriales (llámese oxígeno, nitrógeno, argón, etc.) e implemente un sistema para controlar los movimientos de los cilindros. Nuestro modo de trabajo se basa en prestar cilindros a nuestros distintos clientes que son cilindros propios de la empresa o cilindros que nuestros proveedores nos asignan; pero también se da el caso de que algún cliente nos dé un cilindro de su propiedad como canje. Asi que la tabla de cilindros queda asi:
El campo propietario se corresponde con la clave primaria de mi tabla de clientes que está definida así:
Debido a que se maneja una cantidad minima de proveedores con los mismos campos se guardan clients y proveedores en la misma table diferenciandose por el campo tipo (0 clientes, 1 proveedores) Bueno he querido listar los movimientos de los cilindros con la siguiente consulta:
La consulta devuelve los datos deseados y a una buena velocidad aun con más de 10000 registros que devuelve (Es una consulta inicial aun sin aplicarle filtros; lo que pienso hacer). Pero viendo el plan encontré esto:
Ósea que hay un encuentro natural en la tabla de Clientes que se utiliza dos veces en la consulta (CP1 cliente a quien se le presto un cilindro; y Cp2 propietario del cilindro). El caso es que al quitar alguna de las referencias dejando solo una tabla ya no me muestra el encuentro natural. Como dije la consulta se muestra bien pero a futuro cuando la tabla tenga muchos más registros puede que empiecen los problemas. La verdad no se qué camino debo tomar para solucionar esto. Ya probé crear otro índice para el campo Id_cliente pero sigue igual. Espero su consejo Desde ya gracias por la atención prestada |
Hola
No enseñas la tabla MOVCILINDROS pero creo que te falta una FOREIGN KEY nomdestino contra CLIEPROV (ID_CLIENTE) Saludos |
Si tienes razon aqui esta la definicion. Si defino las claves foraneas
Agrego q todos los campos incluidos en los joins corresponden con claves foraneas |
La franja horaria es GMT +2. Ahora son las 06:46:35. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi