Ver Mensaje Individual
  #109  
Antiguo 14-11-2012
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Reputación: 21
RONPABLO Va por buen camino
Cita:
Empezado por poliburro Ver Mensaje
No necesariamente un SP puede tener una consulta... puede contener múltiples consultas al igual que ORACLE, DB2, MYSQL, POSTGRESQL, etc
Firebird también puede tener varias consultas.


Cita:
Empezado por poliburro Ver Mensaje
Sobre el rendimiento de la consulta en un SP, esto aplica para la gran mayoria de motores de bases que cuentan con algo llamado "Execution plan" Acaso firebid no lo tiene? Cómo hace firebird para decidir la ruta más óptima para ejecutar una sentencia sql?
Ejecutando el plan, pero lo puedo hacer directamente desde la consulta sin pasar por un SP, aun así en el SP también puedo ejecutar el plan, tiene herramientas para analizar el rendimiento al ejecutar con un plan o con el otro

Cita:
Empezado por poliburro Ver Mensaje
Cómo hacen ustedes para verificar en Firebrid que no están ejecutando un "Table Scan" al ejecutar una consulta?
hay herramientas de estadística que nos muestra si una consulta está o no usando indice, los tiempos que se demoran al hacer una consulta, cual es el plan usado, etc

Cita:
Empezado por poliburro Ver Mensaje
¿Firebird es capaz de permitirles decidir como y cuándo usar determinados índices en una tabla?
Sí.

Cita:
Empezado por poliburro Ver Mensaje
Pues con Mysql, Oracle, Db2, MsSql hacer eso es aún más sencillo:

Código SQL [-]

select * from (Select 'Data' As Dummyfield) TableDummyInner join Table on 1 = 1
No es lo mismo, estoy hablando que en Firebird se puede hacer uniones, consultas y subconsultas a un procedimiento almacenado (se puede tomar como si fuera un view de SQL Server pero con la potencia que da los procedimientos almacenados), cosa que no se puede hacer en SQL Server, ahora, no entiendo que resultado traerá el ejemplo que pones en tu ejemplo, para ser más claro en el procedimiento almacenado que puse de ejemplo al hacer una consulta como:

Código SQL [-]
select valor from SP_CADENA_A_RECORD('1,3,4,6,8,12')


el resultado va ser un DataSet:


Cita:

Valor
1
3
4
6
8
12
Al cual le puedo hacer una subconsulta, o hacer join, o lo puedo llamar en otro Procedimiento almacenado:


Código SQL [-]
   for select valor from SP_CADENA_A_RECORD('1,3,4,6,8,12') order valor into :Valor do
   begin
      for Select c.Nombre, c.Encargado, CXC.Fecha, CXC.Cupos 
      from Ciudades c 
      inner Join CalendarioXCiudad CXC on c.Id = CXC.IdCIudad
      where C.Id = :Valor into :Ciudad, :Encargado, :FechaEvento, :Cupos do
      begin
         suspend;
      end
   end
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita