活用数据记录的id对数据进行随机批量更新

来源:岁月联盟 编辑:zhuzhu 时间:2009-07-24
    在设计随机模板功能时,有一项功能是用户对现在的内容进行随机指定模板,按以往的算法,只能用如下方式去弄:
    首先从数据库里读出所有的记录,然后通过PHP随机获得一个模板名,然后对当前的记录进行更新,这样就需要遍历一次数据库,有多少条记录就进行多少次Update操作,显然是效率很低下的一种方法,MySQL本身没的提供随机更新的方式,但可以利用一定的技巧达到这目的。
大家可以分析下面这个段程序:
$totalTmp = count($tamplate_arr);
for($i=0; $i < 10; $i++)
{
$temp = $tamplate_arr[mt_rand(0, $totalTmp)];
$dsql->ExecuteNoneQuery(" Update `ddmx_addonarticle` set templet='$temp' where RIGHT(aid, 1)='$i' ");
}
    按这种方式,同样达到了随机的目的,当然缺点就是没前者那么混乱,如果想要更混乱些,可以通过这原理多设置一些种子数,例如说把RIGHT(aid, 2)='$i' 取到两位,然后并不按10-99这样去更新,而是从中抽出上部份进行更新,这样就基本上达到了目的,但执行性能方面,远远优于前者。