Busquedas rapidas en datatable

27/10/2008 - 16:21 por Luisa Goicochea | Informe spam
En una aplicacion me traigo una tabla (la que guarda los permisos del
usuario por opcion del sistema) al principio del programa para no estar
trayendola cada vez ya que se usara en varias partes del sistema.
Hay alguna manera de que las busquedas en este datatable en memoria sean
rapidas o indexadas, o en todo caso es preferible traer de nuevo los datos
desde la base de datos nuevamente cuando se necesite seleccionar una parte
de los datos ? Que puede ser mas rapido?

Luisa

Preguntas similare

Leer las respuestas

#1 Alfredo Novoa
27/10/2008 - 17:21 | Informe spam
Hola Luisa,

El Mon, 27 Oct 2008 11:21:53 -0400, Luisa Goicochea escribió:

En una aplicacion me traigo una tabla (la que guarda los permisos del
usuario por opcion del sistema) al principio del programa para no estar
trayendola cada vez ya que se usara en varias partes del sistema.
Hay alguna manera de que las busquedas en este datatable en memoria sean
rapidas o indexadas, o en todo caso es preferible traer de nuevo los datos
desde la base de datos nuevamente cuando se necesite seleccionar una parte
de los datos ? Que puede ser mas rapido?



Más rápido acabas si consultas cada vez el dato que necesitas.


Saludos
Respuesta Responder a este mensaje
#2 Alberto Poblacion
27/10/2008 - 21:38 | Informe spam
"Luisa Goicochea" wrote in message
news:ukBf%
En una aplicacion me traigo una tabla (la que guarda los permisos del
usuario por opcion del sistema) al principio del programa para no estar
trayendola cada vez ya que se usara en varias partes del sistema.
Hay alguna manera de que las busquedas en este datatable en memoria sean
rapidas o indexadas, o en todo caso es preferible traer de nuevo los datos
desde la base de datos nuevamente cuando se necesite seleccionar una parte
de los datos ? Que puede ser mas rapido?



Si sabes cuál es el campo índice, puedes traer los datos a alguna
estructura indexada, como por ejemplo un Dictionary<clave, valor> donde la
clave es el dato que usas para la búsqueda, y el valor puede ser un objeto
que encapsule todo el resto de los datos asociados a esa consulta. El
Dictionary internamente usa un HashTable, por lo que las búsquedas son
rapídísimas si buscas por clave. Pero, por supuesto, tiene limitaciones que
no tiene un servidor de base de datos, por ejemplo, solo busca valores
exactos de la clave pero no rangos de valores, y si tienes muchos registros
ocupa una cantidad de memoria considerable.
Respuesta Responder a este mensaje
#3 Hugo Nugra
27/10/2008 - 22:57 | Informe spam
En la clase que gestiona los permisos asignados al usuario, créate una
propiedad "estática" en la que cargues la tabla que necesitas. Será
necesario que le cargues una sola vez.

Cada vez que requieras un dato específico utiliza el método Select() de la
clase DataTable.
Respuesta Responder a este mensaje
#4 Lord Voldemort
27/10/2008 - 23:55 | Informe spam
cheka esto

http://msdn.microsoft.com/es-es/lib...wwhez.aspx



"Luisa Goicochea" escribió en el mensaje de noticias
news:ukBf%
En una aplicacion me traigo una tabla (la que guarda los permisos del
usuario por opcion del sistema) al principio del programa para no estar
trayendola cada vez ya que se usara en varias partes del sistema.
Hay alguna manera de que las busquedas en este datatable en memoria sean
rapidas o indexadas, o en todo caso es preferible traer de nuevo los datos
desde la base de datos nuevamente cuando se necesite seleccionar una parte
de los datos ? Que puede ser mas rapido?

Luisa

Respuesta Responder a este mensaje
#5 Alberto Poblacion
28/10/2008 - 08:40 | Informe spam
"Lord Voldemort" wrote in message
news:eYo$
cheka esto

http://msdn.microsoft.com/es-es/lib...wwhez.aspx




Observación: El artículo enlazado trata sobre el DataView, que hace sus
búsquedas mediante un bucle que examina secuencialmente los datos. El OP
preguntaba que si "Hay alguna manera de que las busquedas en este datatable
en memoria sean rapidas o indexadas". Sin embargo, tanto el DataTable.Select
como el DataView.Find hacen una búsqueda "lenta", tardando O(n), mientras
que una búsqueda indexada necesita O(log(n)) y un hashtable O(1).
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida