Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-08-2003
emeceuy emeceuy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Uruguay
Posts: 122
Poder: 21
emeceuy Va por buen camino
INDICES de BASES?

HOLA A TODOS...

Cuento mi problema, aunque en realidad no lo és; es solo una duda que tengo.

En mi programa uso solamente consultas query y así me manejo bien. Funciona correctamente y rápido, sin demoras. He leído que para organizar la información conviene indexar las bases de datos.
Ahora... es necesario hacer indices si solo uso querys y no ttables? porque en ttable hay propiedades para hacer referencia a archivos de índices y en el query no... entonces... como lo relaciono al índice con la base?

He creado un indice de una base mediante sql, y lo creó sin problemas, es más, luego la abrí en el DatabaseDesktop y aparece ya definido el indice correctamente...

En definitiva:
está bien que cree indices de las bases, en mi caso, ya que utilizo en el programa solamente querys?
tengo que conectarlos de alguna manera con sus respectivas bases o eso ya se hace automaticamente al indexar?
está bien la manera en que estoy haciendo esto???


Bueno, muchas gracias por la ayuda prestada...

saludos y mil gracias

Marcelo, desde Uruguay
__________________
Marcelo C.
Responder Con Cita
  #2  
Antiguo 16-08-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Hola Marcelo

Ciertamente, las componentes que lanzan Querys (TQuery, TIBQuery, ....) no tienen ninguna propiedad para utilizar un indice u otro (como tienen los TTables,...), pero el lenguaje SQL sí que tiene una instrucción para ordenar las consultas, el order by. Es aqui donde interbienen los indices definidos en una tabla ya que, si hay un indice definido por las columnas que incluye el order by, el motor de acceso a bases de datos se encargara de utilizarlo (almenos en teoria) y, para tablas con muchos registros, la definicion de un indice (una buena definicion) incrementa sustancialmente la respuesta del SQL

Por bueno definicion me refiero a que, si se pone en el Order By dos campos (campo1 y campo2)

Código:
select *
from tabla
order by campo1, campo2
y tenemos definido un indice por campo1 y otro por campo2, no nos va a servir de mucho (o de nada). En este caso, se tendría que definir un indice por campo1+campo2

Con esto no quiere decir que se tenga que definir un indice por cualquier consulta que intentemos realizar, tambien dependera de si es una consulta muy usual o que se lanza una vez al año (en este caso, no creo que la definicion de un indice sea necesaria aunque la consulta tarde un poco mas sin él). Hay que valorar en que situaciones realizar dicho indice

Bueno, espero te sirva
Responder Con Cita
  #3  
Antiguo 22-08-2003
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 22
Mick Va por buen camino
Solo comentar que los motores de bases de datos intentan usar los indices para mejorar la velocidad, pero el indice que use no depende necesariamente de la clausula order by, es decir aunque no exista esta clausula el sistema de base de datos intentara usar algun indice si es posible. Lo tipico es utilizar alguna herramienta del sistema de base de datos que se use para comprobar que indices esta usando cada query y asi intentar optimizarlas si es posible.
Por ejemplo en una query como esta (sin order by):
select * from table where campo1=valor
el sistema intentara utilizar un indice por campo1 ( siempre que exista), ya que haria infinitamente mas rapida la query.

Salud2 !!!
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 18:07:21.


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