Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Es correcta esta sentencia SQL ? -sencilla-

Estas en el tema de Es correcta esta sentencia SQL ? -sencilla- en el foro de Bases de Datos General en Foros del Web. Que tal, Deseo su opnión, sobre si esta sentencia SQL está bien hecha. Código PHP: SELECT  *  FROM provider WHERE provider_id IN  ( SELECT provider_id FROM provider_contact WHERE language LIKE  'A%' );  Gracias desde ya....
  #1 (permalink)  
Antiguo 01/08/2005, 14:19
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 9 meses
Puntos: 0
Es correcta esta sentencia SQL ? -sencilla-

Que tal,

Deseo su opnión, sobre si esta sentencia SQL está bien hecha.

Código PHP:

SELECT 
FROM provider WHERE provider_id IN 
(SELECT provider_id FROM provider_contact WHERE language LIKE 'A%'); 
Gracias desde ya.
  #2 (permalink)  
Antiguo 01/08/2005, 21:32
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 1 mes
Puntos: 7
en oracle la veo en sintaxis correcta aunque seria mas rapido hacer join

SELECT a.*
FROM provider a,
provider_contact b
WHERE a.provider_id = b.provider_id
AND blanguage LIKE 'A%'
__________________
Blogzote.com :-) Mi blog
  #3 (permalink)  
Antiguo 07/08/2005, 16:26
 
Fecha de Ingreso: enero-2004
Mensajes: 310
Antigüedad: 20 años, 3 meses
Puntos: 0
Los in castigan mucho el servidor y son muy costosas, mejor hacer el tipo de consulta que propone kikolice
__________________
Un saludo,
Trucos
Videos
  #4 (permalink)  
Antiguo 07/08/2005, 18:26
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
Vaya, interesante...
  #5 (permalink)  
Antiguo 07/08/2005, 19:20
Avatar de jmn2k1  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires...
Mensajes: 489
Antigüedad: 22 años, 5 meses
Puntos: 2
Cita:
Iniciado por kikolice
aunque seria mas rapido hacer join
Cita:
Iniciado por Dynk
Los in castigan mucho el servidor y son muy costosas, mejor hacer el tipo de consulta que propone kikolice
Seguros?

Si yo tuviera dos tablas con muchos registros y hago un join estaria leyendo toda la extencion de la primera tabla y toda la extencion de la segunda tabla para luego juntarlas.
En el caso de que en la segunda tabla solo tenga pocas coincidencias (ej: pocos provider_id LIKE '%a') habria leido todo para nada (o para usar muy pocos). En cambio si hago una subconsulta, primero selecciono los necesarios de la segunda tabla, y solo los necesarios, para luego juntarlos con la otra tabla...

No les parece??


Y con respecto a la pregunta original, depende de que base de datos estemos hablando, en Transact SQL (MS SQL Server) tambien estaria bien, pero para MySQL no. (Al menos no hasta la ultima version, no se si ya incorporo subconsultas)
__________________
JmN
  #6 (permalink)  
Antiguo 07/08/2005, 21:56
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 1 mes
Puntos: 7
no soy un maestro en oracle pero si te puedo decir que al hacer el join, que los campos del join tengan indices ( no recuerdo como reacciona oracle ante el like ) es mas rapido que hacer el in, saludos
__________________
Blogzote.com :-) Mi blog
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:56.