![]() |
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 |
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 * 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 |
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