我使用VB ADO连接MYSQL,其中有一个1000条记录的表,其中有一个字段需要更改数据,我使用以下代码 
Sqlstr="select * from ceshi order by user" 
myre.open sqlstr,mydb 
myre.movefirst 
i=0 
while myre.eof=false 
  myre!tid=i 
  i=i+1 
  myre.update 
  myre.movenext 
wend 
这段代码运行没有问题,只是第一次运行时速度很慢,大概需要30秒,第二次运动却只需要1秒左右。请问各位大侠,为什么两次的运算速度不一样,并且有什么比较快速的设计方法。 
其中我对user字段作了索引,但我不了解这个索引所起的作用 
还有是否可以使用update语句来进行批量更新
有朋友回答:第一次需要将数据加载到缓存、再更新;以后只要数据存在缓存中,直接更新缓存速度就很快了。
如果是在更新过程中使用缓存的话,那么我重启机器后缓存数据应该丢失,但事实是再次更新速度仍然很快,我感觉这不是使用了机器的内存,如果是数据库在第一次更新时他创建了一个缓冲存储表,倒可以解释这个问题,但是我在计算过一遍后,把i=i+1改为i=i+2再次运行,发现速度又慢了下来。我现在理解是当数据表更新数据时,如果它发现原有数据和更新数据一样的话,就不执行更新命令,如果两者不一致,则执行更新命令。这样就可以解释不改变语句时第一次慢而以后快,改变语句后执行速度又慢下来的情况。 
以上所想只是我分析运行情况时的一些感觉,但没有在书中找到相关的理论,不知道对不对。 
另外一点,这样的执行效率我感觉太慢了,在操作mysql数据库时应该有效率更高的处理方式,毕竟这样的更新操作应该是常用的。如果是1000条记录都这么慢,那么更大的数据表的更新速度就不可想象啦。 
期盼专家解释!