Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   INDICES de BASES? (https://www.clubdelphi.com/foros/showthread.php?t=2972)

emeceuy 15-08-2003 07:41:10

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

__cadetill 16-08-2003 10:44:32

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

Mick 22-08-2003 00:03:54

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 !!!


La franja horaria es GMT +2. Ahora son las 20:58:50.

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