ну по логике IN там массив, а значит каждый раз будет перебирать.... но кто его знает...
пишут что одинакого) IN как то по аккуртней будет) пусть будет IN)
Итак. Вариант 1 :
$arQueryUsers = array();
$qq = mysql_query("SELECT `id` FROM `".prefix."users` WHERE `cfrom`>`cto`;");
if(($all = mysql_num_rows($qq)) > 0)
{
while($field = mysql_fetch_array($qq))
{
$arQueryUsers[] = $field['id'];
}
}
if(sizeof($arQueryUsers) > 0)
mysql_unbuffered_query("update `".prefix."url` set `activ`='0' where `activ` = '1' && `moder` = '0' and `id_user` IN (" . implode(', ', $arQueryUsers) .");");
$arQueryUsers = array();
$qq = mysql_query("SELECT * FROM `".prefix."users` WHERE `cfrom`<=`cto`");
if(($all = mysql_num_rows($qq)) > 0)
{
while($field = mysql_fetch_array($qq))
{
$arQueryUsers[] = $field['id'];
}
}
if(sizeof($arQueryUsers) > 0)
mysql_unbuffered_query("update `".prefix."url` set `activ`='1' where `activ` = '0' && `moder` = '0' and `id_user` IN (" . implode(', ', $arQueryUsers) .");");
mysql_query("OPTIMIZE TABLE `".prefix."url`, `".prefix."users`;");
Вариант 2:
$arQueryUsers1 = $arQueryUsers2 = array();
$qq = mysql_query("SELECT `id`, `cfrom`, `cto` FROM `".prefix."users`");
if(($all = mysql_num_rows($qq)) > 0) {
while($field = mysql_fetch_array($qq))
{
if($field['cfrom'] > $field['cto']) $arQueryUsers1[] = $field['id'];
else $arQueryUsers2[] = $field['id'];
}
}
if(sizeof($arQueryUsers1) > 0)
mysql_unbuffered_query("update `".prefix."url` set `activ`='0' where `activ` = '1' && `moder` = '0' and `id_user` IN (" . implode(', ', $arQueryUsers1) .");");
if(sizeof($arQueryUsers2) > 0)
mysql_unbuffered_query("update `".prefix."url` set `activ`='1' where `activ` = '0' && `moder` = '0' and `id_user` IN (" . implode(', ', $arQueryUsers2) .");");
mysql_query("OPTIMIZE TABLE `".prefix."url`, `".prefix."users`;");