Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-03-2004
Avatar de StartKill
StartKill StartKill is offline
Miembro
 
Registrado: ene 2004
Posts: 299
Poder: 21
StartKill Va por buen camino
Vistas sort/index

Wnas a todos.

Les comento, estoy trabajando con delphi 7.0 y interbase 6.xx y estoy utilizando componentes IBX.

He hecho un grid juntando 2 tablas, donde he utilizado un IBQuery y en su propieadad SQL he puesto el select con su join y ademas de un order by.

Cuando arranca el programa y al pedir mostrar dicho grid se demoraba cerca de 6 segundos(mas o menos)---eso es desesperante para los usuarios, y cuando no está el order by unos 4 1/2 segundos, aun asi es lento.

Lei sobre las vistas y manos a la obra, cree una vista y me di con la soorpresa que no se puede utilizar el order by.

Pero lo bueno que en mi nuevo grid y mi nuevo ibquery trabajo con la vista y zass es una bala---es preciosa la velocidad--- ni un segundo ya está en pantalla.

Pero necesito que este ordenada y procedi a añadir su respectivo order by en mi intruccion select de la propiedad SQL de mi IBQuery---y se demora 4 seconds.

Debo suponer que es lento por que tiene que ordenar antes de visualizar....

Como puedo hacer que sea mas rapido esto? me pregunté, y me doy la respuesta: como hago un index o un order by a una vista.

Que hacer?

Gracias

Your friend

StartKill
Lima-Perú

Última edición por StartKill fecha: 03-03-2004 a las 00:06:36. Razón: VISTAS / mal titulo
Responder Con Cita
  #2  
Antiguo 03-03-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Si no lo tienes ya, prueba a crear un índice por el/los campos que estés haciendo el Order By.

De todas maneras, si tus usuarios se desesperan por una demora de 4-6 sg....

PD: también todo depende del volumen de información que estés moviendo, mira de acotar bien con el Where
Responder Con Cita
  #3  
Antiguo 03-03-2004
Avatar de StartKill
StartKill StartKill is offline
Miembro
 
Registrado: ene 2004
Posts: 299
Poder: 21
StartKill Va por buen camino
Hola.

hay veces que uno escribe no acorde a lo que piensa y necesita, ese soy uno de ellos.(solo cuando estoy muy truncao)

Lo que necesito es poner un indice en la base de datos para la vista y debo suponer que de esa forma aceleraria mi Query a una vista.

Uso el IBmanager y no veo una opcion para crear un indice a la vista que se encuentra en el servidor

Gracias.

Your friend

StartKill
Lima-Perú
Responder Con Cita
  #4  
Antiguo 03-03-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
No, yo me refería a la tabla sobre la que estás haciendo la vista, que si no tenía índice creado, lo crearas, para ver si el SQL sobre la tabla mejoraba o no, porque una vista, que yo sepa, no se puede ordenar ni crear índices
Responder Con Cita
  #5  
Antiguo 03-03-2004
orodriguezc orodriguezc is offline
Miembro
 
Registrado: nov 2003
Ubicación: Cartagena - Colombia
Posts: 33
Poder: 0
orodriguezc Va por buen camino
Puedes crear un indice a la tabla sobre la que haces el Order By. Por supuesto, el indice debe iniciar con el campo o campos del order by.

También puedes crear un Stored Procedure que incluya la clausula Order By en la instrucción Select. En la propiedad SQL del IBQUERY solo tendrías que escribir "Select * from miStoredProcedure" y no preocuparte del ordenamiento, ya que el Stored procedure es quien lo realiza.
Responder Con Cita
  #6  
Antiguo 03-03-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cool

Cita:
Empezado por orodriguezc
También puedes crear un Stored Procedure que incluya la clausula Order By en la instrucción Select. En la propiedad SQL del IBQUERY solo tendrías que escribir "Select * from miStoredProcedure" y no preocuparte del ordenamiento, ya que el Stored procedure es quien lo realiza.
Solo aclarar que esta es una forma práctica de conseguir "vistas" ordenadas (si revisas el estándar SQL, verás que una vista no puede incluir en su definición una clausula order by). Sin embargo, tenes que seguir valiendote de indices (en las tablas de base de la vista) para que la consulta ordenada sea optima.

para crear un indice: Create index.
con cualquier herramienta podes consultar también el plan de una consulta para ver si el indice está siendo utilizado...

hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 16-01-2006
Luis Castillo Luis Castillo is offline
Miembro
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 102
Poder: 21
Luis Castillo Va por buen camino
Ordernar vista

A ver... tengo un problema similar a lo comentado....tengo una vista y la muestro por medio de un IBQUery y en un DBGrid. Pero no puedo ordenarla.

Cita:
Pero necesito que este ordenada y procedi a añadir su respectivo order by en mi intruccion select de la propiedad SQL de mi IBQuery---y se demora 4 seconds
Eso no me funciono a mi....porque el el IBQuery.SQL tengo:

Código PHP:
Select *
From Vista 
Y le agrego

Código PHP:
ORder by Columna1columna2columna3 
Pero cuando abro la consulta me muestra error....algo asi como que no conoce el ORder by

Que puedo hacer....
__________________
LK
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 12:09:07.


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
Copyright 1996-2007 Club Delphi