Hola gente, mi consulta es la siguiente, tengo una tabla que es chica en términos de entradas (hoy ronda los 3500 registros y en un par de años con suerte si llega a los 20.000) pero es muy grande en cantidad de columnas (109), la cuestión es que la carga del gridview es muy lenta, no estoy usando el evento data, ya que tengo entendido que su mejora influye sustancialmente cuando se manejan grandes volúmenes de información, que no es mi caso, lo que tengo es una tabla con muchísimas columnas. ¿Mi creencia sobre el evento data es correcto?, o muchas columnas también debe ser tratado como gran volumen de información.
La tabla es única, no tiene claves foráneas, porque no las hay, sus datos son únicos y no llevan relación con ninguna otra tabla, ¿es aconsejable partirla (en varias tablas), aún en estos casos?
En el gridview solo necesito ver los datos de 7 columnas, tiene sentido usar una tabla con esas 7 columnas y otra tabla con las restantes columnas y relacionarlas con una clave foránea.
Que opinión tienen ustedes.
Gracias de antemano por cualquier comentario esclarecedor.
Este es el código que utilizo para cargar la vista, borre todas las lineas para no cansar con la lectura
Código:
Public Sub Mostrar_ListaBIB()
Dim i As Integer
VListaBIB.Clear()
Contenido = Conn.Exec("select * from bibtex ORDER BY id DESC")
'diseñamos el tableview
VListaBIB.Columns.Count = 110
VListaBIB.Header = True
VListaBIB.Columns[0].Title = "ID"
VListaBIB.Columns[0].Width = 60
' sigue hasta el 109
VListaBIB.Columns[109].Title = ""
VListaBIB.Columns[109].Width = 0
'asigno la cantidad de filas según los datos que existan
VListaBIB.Rows.Count = Contenido.Count
'recorremos el resutado de la consulta para mostrarlo
For i = 0 To Contenido.Count - 1
VListaBIB[i, 0].Text = Contenido!id
VListaBIB[i, 1].Text = Contenido!tipoEntrada
VListaBIB[i, 2].Text = Contenido!citationKey
VListaBIB[i, 3].Text = Contenido!keywords
' sigue hasta el 109
VListaBIB[i, 109].Text = Contenido!type
Contenido.MoveNext
Next
End
Y el código para generar una nueva entrada, no tiene problemas
Código:
Public Sub BtnNuevoBib_Click()
BtnNuevoBib.Visible = False
BtnEliminarBib.Visible = False
btnGuardar.Visible = True
btnGuardarCambios.visible = False
btnAgregarCitationKey.Enabled = True
ToolPanel1.Index = 0
txtTMPbiblio.Clear 'limpiamos el campo temporal
txtTMPbiblio.SetFocus()
LimpiarCamposBIB()
ObtenerNuevoId()
End
Public Sub ObtenerNuevoId()
Dim Idn As Integer
Dim MaxId As Variant
MaxId = Conn.Exec("SELECT MAX(id) FROM bibtex LIMIT 1")
If MaxId["MAX(id)"] = Null Then
Idn = 0
Else
Idn = CInt(MaxId["MAX(id)"]) + 1
Endif
txtID.Text = Idn
txtCLAVEbib.Text = "@" & Idn & "-"
txtKEYWORDS.Text = "," & BaseName & ","
End