需频繁遍历更新的字段,是否有必要创建索引?
											问题:表 mytable 有10000行记录,其中有一个整型值字段 Score,会在每一次循环中,遍历更新一次,并查询是否存在值大于95的记录:
select B
use myTable
select A
use myIndex
scan
*select A
lnPara = A.ParaIndex
select B
* 批量更新所有记录
update mytable set score = setNewScore(lnPara)
locate for score > 95
if found()
do something
endif
endscan
Score 字段是否有必要建立索引,以便 locate for score > 95 能快速查询?
存在这个疑问是因为:
update mytable set score = setNewScore(lnPara)
会遍历更新10000次score,同时VFP要自动维护score的索引,这造成性能损失。
两相权衡之下,究竟是建立索引效率高,还是不要索引更快?
DeepSeek 回答:
在你的当前代码逻辑下,不建议为score字段建立索引,原因如下:
索引维护成本:每次UPDATE都会导致score索引的完全重建(10000次更新)
查找频率低:每次循环只执行1次LOCATE
总操作比例:更新操作:查找操作 = 10000:1
恰好,我也没创建Score索引。

话说,DeepSeek 的分析,正确吗?



											

	    

	