Visual Basic - Busqueda Lenta

Life is soft - evento anual de software empresarial
   
Vista:

Busqueda Lenta

Publicado por Damian (29 intervenciones) el 26/03/2008 20:08:59
Tengo un problema, en una caja de texto para que sea mas rapida la busqueda el usuario puede ir ingresando los caracteres de un articulo y asi el datagrid va mostrando los articulos que se acerquen a los caracteres ingresados,esto lo realice en un text_change con una consulta. El problema es que a medida que se va escribiendo los caracteres la busqueda se hace muy lenta y tarda mucho en mostrar los articulos, por lo gral pasa cuando voy borrando los caracteres de atras para adelante y vuelvo a escribir los caracteres. El puntero del mouse queda con el famoso dibujito de que esta pensando y despues de un rato largo si me muestra los articulos que correspondan con lo que el usuario fue escribiendo en la caja de texto, habra unos 1000 registros en la BD. En la consulta puse identity para acelerar la busqueda pero su mejora fue escasa. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Busqueda Lenta

Publicado por fede (189 intervenciones) el 26/03/2008 20:30:53
pone la consulta asi la veo sino es medio dificil
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda Lenta

Publicado por Damian (29 intervenciones) el 27/03/2008 02:15:04
Aca esta el codigo dentro del TtxtBusc_TextChanged(), como veran hay algunas variables que vienen de otro lado, cree que se entiende:

Private Sub TxtBusc_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtBusc.TextChanged

SQL = "select @@identity,CodDetArt as[Cod Art],A.Descripcion+' '+Detalle [Descripcion],Marca,Precio [Precio Contado]," _
& "PrecioLista[Precio Lista],ListaPorcentaje[Porcentaje para Lista %],PrecioXCant[Precio por Cantidad]," _
& " Descuento [Descuento en %],Existencia,Critico,C.Descripcion as Categoria,case DA.Baja when 0 then 'NO' " _
& "else 'SI' end Baja from Articulos A,Categoria C,Marcas M right join DetalleArticulo DA on " _
& "M.CodMarca=DA.CodMarca where A.Baja=0 and DA.Baja=0 and C.Baja=0 and C.CodCat=A.CodCat and A.CodArt=" _
& "DA.CodArt and A.Descripcion like'" & TxtBusc.Text & "%'"

Dim MiTabla As New DataTable
Com = New SqlCommand(SQL, MiConexion)

If MiConexion.State = ConnectionState.Open Then
MiConexion.Close()
End If
MiConexion.Open()
Rs = Com.ExecuteReader()
MiTabla.Load(Rs, LoadOption.OverwriteChanges)

DG1.DataSource = MiTabla

Rs.Close()
Cerrar()
MiConexion.Close()
MiTabla = Nothing
end sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda Lenta

Publicado por alberto (123 intervenciones) el 27/03/2008 09:55:59
Primero estás trabajando, VBNet, hay un foro para ello, si tienes dudas deberías preguntar alli.
Segundo, me imagino que la tabla en principio, estará cargada con todos los datos sin aplicar ningun filtro, entonces crea una vista de la tabla basado en el filtro actual, y pon el datasource del Datagrid a esa vista, debería ser mas rápido, ya que no haces llamadas a la base de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda Lenta

Publicado por Damian (29 intervenciones) el 27/03/2008 13:14:36
Si ya pregunte en ese foro gracias y si la tabla esta cargada, probare lo de la vista ahi puede estar la solucion porque mi notebooks que es donde estoy desarrollando el sistema no es nada lenta asi que no es un problema de memoria y demas. A veces pienso que el problema esta en los controles de .NET como que son pesados o algo asi. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda Lenta

Publicado por alberto (123 intervenciones) el 27/03/2008 23:40:27
Yo creo que el problema está en el acceso en la BD, cada vez que el usuario modifica el textbox, se accede a la BD para cargar datos, cuando estos ya están cargados y debería ser suficiente con filtrarlos, y no te digo si la BD está en otro PC de la Red, o en Internet.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda Lenta

Publicado por Damian (29 intervenciones) el 28/03/2008 13:08:52
Si es verdad, voy a tener que guardar la tabla en una vista y buscar desde esta los articulos que cumplan con lo que vaya ingresando el usuario, entonces siempre trabajo con esta vista.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda Lenta

Publicado por Edwin (303 intervenciones) el 28/03/2008 17:03:23
No sería mejor que trabajes en un entorno Conectado usando DataReader que son mucho más rápidos que un DataSet, ah y tambien si tu Base de Datos soporta Procedimientos Almacenados es mejor usar eso, a mí me resulta algo muy rápido .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda Lenta

Publicado por Damian (29 intervenciones) el 28/03/2008 20:34:57
Que diferencia hay si hago lo del procedimiento almacenado si igual hay que hacer la misma consulta tanto de la forma que yo ya hice como la del procemiento, el select lo tengo que hacer igual,como aceleraria la busqueda un procedimiento almacenado?, que diferencia hay?. Gracias por la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda Lenta

Publicado por Edwin (303 intervenciones) el 31/03/2008 03:17:46
Hay una diferencia muy grande al utilizar Procedimientos Almacenados, ya que es ejecutado directamente en el motor de bases de datos y sobre todo rinde mejor cuando se trabaja en Red.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar