J'ajoute des données de vba excel en utilisant adodb dans une base de données MySQLdevrais-je créer un index pour cela?
Tout fonctionne très bien mais est lent. l'ensemble du processus prend environ 5 secondes.
Je crois que la raison pour laquelle il est lent parce que je suis filtrer:
Dim rowid_batchinfo As String
rs.Filter = "datapath='" + dpath + "' and analystname='" + aname + "' and reportname='" + rname + "' and batchstate='" + bstate + "'"
If Not rs.EOF Then
rowid_batchinfo = rs.Fields("rowid")
cn.Execute "delete from batchinfo where rowid=" + rowid_batchinfo
cn.Execute "delete from calibration where rowid='" + rowid_batchinfo + "'"
cn.Execute "delete from qvalues where rowid='" + rowid_batchinfo + "'"
End If
je ne sais pas exactement processus qui est à blâmer, mais je suis assumign le delete where
me dilatoire. l'une des tables compte environ 500 000 lignes, l'autre environ 300 000 et les 5 000 autres.
ici est la deuxième partie:
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("datapath") = dpath
.Fields("analysistime") = atime
.Fields("reporttime") = rtime
.Fields("lastcalib") = lcalib
.Fields("analystname") = aname
.Fields("reportname") = rname
.Fields("batchstate") = bstate
.Fields("instrument") = instrument
.Update ' stores the new record
End With
' get the last id
Set rs = cn.Execute("SELECT @@identity", , adCmdText)
capture_id = rs.Fields(0)
'MsgBox capture_id
rs.Close
Set rs = Nothing
cette partie ajoute les données. Je pense que c'est relativement rapide, mais je ne peux pas être sûr.
donc pour les instructions de suppression, peut-être que je devrais créer un index? Cependant, dans ce cas, il faudra probablement du temps pour créer l'index et il faudrait que je l'abandonne pour le recréer à chaque fois que j'en ai besoin.
quelqu'un sait comment je peux faire fonctionner ce code plus rapidement?
merci. Je ne sais pas grand chose sur les index, à quelle fréquence se mettent-ils à jour? –
Chaque fois que vous insérez ou supprimez une ligne, les index des tables affectées seront ajustés. De plus, si vous mettez à jour une colonne qui participe à un index et modifiez sa valeur sur une ligne, l'index correspondant sera également mis à jour. – Khorkrak