Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-10-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Pues acabo de hacer una prueba con firebird y también usa el índice de ambas formas.
Responder Con Cita
  #2  
Antiguo 30-10-2012
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Thumbs up

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pues acabo de hacer una prueba con firebird y también usa el índice de ambas formas.
Contribuyo a lo mismo (para evitar que la afirmación de cointec se convierta en un mito).

Hace tiempo hice unas pruebas de "In" contra "Or" en Firebird 1.5, y no solamente en ambos casos usa los índices (era el campo de llave primaria), sino que me resultó más rápida una consulta Select con 10 condiciones Or, que su contraparte In con diez valores separados por coma.

Así que me quedé con Or por ser más rápido.
Responder Con Cita
  #3  
Antiguo 30-10-2012
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 20
mightydragonlor Va por buen camino
Cita:
Empezado por Al González Ver Mensaje
Contribuyo a lo mismo (para evitar que la afirmación de cointec se convierta en un mito).

Hace tiempo hice unas pruebas de "In" contra "Or" en Firebird 1.5, y no solamente en ambos casos usa los índices (era el campo de llave primaria), sino que me resultó más rápida una consulta Select con 10 condiciones Or, que su contraparte In con diez valores separados por coma.

Así que me quedé con Or por ser más rápido.
Claro, finalmente el parser debe cambiar toda la lista del IN para dejar la consulta con OR, pero supongo que la diferencia no debió ser mucha, por otro lado es mucho mas fácil usar IN que OR, si se hace desde un store procedure.

Saludos.
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita
  #4  
Antiguo 31-10-2012
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por mightydragonlor Ver Mensaje
Claro, finalmente el parser debe cambiar toda la lista del IN para dejar la consulta con OR, pero supongo que la diferencia no debió ser mucha, por otro lado es mucho mas fácil usar IN que OR, si se hace desde un store procedure.
Desconozco qué hace con exactitud el analizador sintáctico de Firebird, pero el código de aquellas pruebas estaba precisamente dentro de un procedimiento almacenado. Suelo usar In, pero como esa operación era crítica, opté por Or. No recuerdo ahora la diferencia de tiempos, aunque ciertamente me parecía poca para un caso normal.

Saludos.
Responder Con Cita
  #5  
Antiguo 31-10-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
El uso del índice es INDEPENDIENTE de si se emplea IN u OR.
Por lo general, y para cualquier motor de bases de datos, una consulta con IN es más lenta debido a que se requiere lanzar tantas subconsultas como criterios a evaluar dentro de IN existan. No es lo mismo, si se puede, enfocarlo desde una evaluación booleana como OR ya que el analizador detecta estos y puede optimizar mejor el proceso.

Internamente, de lo que vagamente tengo entendido y leído, Firebird tiene un árbol-AND-OR o algo por el estilo que le permite hacer evaluaciones y comprobaciones de una manera efectiva y puede filtrar los registros en la propia consulta. En cambio, cuando hay un IN se emite la misma consulta para cada valor a fin de determinar si corresponde o no filtrarlo.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #6  
Antiguo 31-10-2012
cointec cointec is offline
Miembro
 
Registrado: jul 2004
Ubicación: Alicante-España
Posts: 76
Poder: 22
cointec Va por buen camino
Tenéis razón, estaba equivocado, no sé porque tenía esta idea y siempre que es posible utilizo in en vez de or.
__________________
Un saludo, Jesus García
Responder Con Cita
  #7  
Antiguo 31-10-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Quien tiene boca, se equivoca

Lo mismo en versiones anteriores era como has contado
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
update a dos tablas relacionadas al mismo tiempo thelibmx MS SQL Server 2 14-11-2007 12:08:28
Tablas Relacionadas y SQL Deiv SQL 10 14-08-2007 15:26:33
Update en Tablas Relacionadas gluglu Conexión con bases de datos 0 01-10-2004 19:42:50
Update de campos clave, tablas relacionadas jfleming Conexión con bases de datos 10 26-02-2004 16:55:11
tablas relacionadas y update sql joanajj Conexión con bases de datos 4 05-08-2003 13:17:23


La franja horaria es GMT +2. Ahora son las 00:21:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi