Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/04/2011, 12:37
alexcandela007
 
Fecha de Ingreso: mayo-2005
Mensajes: 5
Antigüedad: 19 años
Puntos: 0
Pregunta VB - Minimizar el tiempo de busqueda de un registro en BD SQL SERVER

Buenos Dias

Hace algun tiempo realize una aplicacion para llevar control de inventarios algo sencillo, utilize visual basic 2010 express y sql server.

Ahora la base de datos llego a 160.000 usuarios, y por lo tanto se me presento un pequeño detalle que habia pasado por alto. al hacer una consulta al ultimo usuario de la base de datos se me demora entre 10 segundos a 20 segundos, demasiado tiempo.

SQL SERVER: Para crear la base de datos utilize:
------------------------------------------------------------------------------------------
CREATE TABLE USUARIOS1 (Documento varchar(15)PRIMARY KEY CLUSTERED,
Tipo varchar(3), APELLIDO_1 varchar(15), APELLIDO_2 varchar(20),
NOMBRE_1 varchar(15), NOMBRE_2 varchar(20), Eps varchar(50),
Edad varchar(8), Direccion varchar(30), Telefono varchar(10),
Estrato varchar(2), Sexo varchar(10), Contrato varchar(15))
-----------------------------------------------------------------------------------------

VB: Para conectarme a la base de datos utilize:
----------------------------------------------------------
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
----------------------------------------------------------
cn.Open("Provider=SQLOLEDB; " & _
"Initial Catalog=MI BD; " & _
"Data Source=ALEX\SQLEXPRESS; " & _
"User Id=admin;Password=******* ;")
----------------------------------------------------------

'DEFINO LAS CARACTERISTICAS DEL RECORDSET

rs.ActiveConnection = cn
rs.CursorType = ADODB.CursorTypeEnum.adOpenKeyset
rs.LockType = ADODB.LockTypeEnum.adLockOptimistic

-------------------------------------------------------------------------
'PARA REALIZAR LA BUSQUEDA Y COLOCAR EL DATO EN TEXTBOX

rs.Open("select * from USUARIOS1")

rs.Find("Documento = '" & TextBox1.Text & "'")

If rs.BOF = False And rs.EOF = False Then

TextBox2.Text = rs.Fields(1).Value
TextBox3.Text = rs.Fields(2).Value

Else
MsgBox("No se ha podido localizar el registro")
TextBox1.Focus()
End If

rs.Close()

--------------------------------------------------------------------------------------------

Buenos como vemos el codigo es sencillo y realizo lo que quiero, en algunos formularios utilizo para la busqueda:

rs.Filter = "Documento = '" & TextBox1.Text & "'"

Pero sigue igual de lenta la busqueda.

Quisiera que me ayudaran con alguna otra forma para que la busqueda sea mas rapida le agradeceria mucho.