Вы не зашли.
Главная » PHP » Оптимизировать кусок кода
#1. Anwap Off (0)
Участник
2010.03.30 20:08
Gemorroj помоги оптимизировать этот кусок кода
Код:
mysql_query("OPTIMIZE TABLE `".prefix."url`");
mysql_query("OPTIMIZE TABLE `".prefix."users`");
$result1=mysql_query("SELECT * FROM `".prefix."users` WHERE `cfrom`<=`cto`");
 
if ($result1>0)
{
 
while ($field=mysql_fetch_assoc($result1))
{
mysql_query("update `".prefix."url` set `activ`='1' where `activ` = '0' && `moder` = '0' and `id_user` = '".$field['id']."';");
}
}
$res=mysql_query("SELECT * FROM `".prefix."users` WHERE `cfrom`>`cto`");
if ($res>0)
{
while ($field=mysql_fetch_assoc($res))
{
mysql_query("update `".prefix."url` set `activ`='0' where `activ` = '1' && `moder` = '0' and `id_user` = '".$field['id']."';");
}
}
 
$l = mysql_result(mysql_query('SELECT COUNT(`id`) FROM `'.prefix.'url` WHERE `id_user`<>"'.$_USER['id'].'" AND `activ`=0 AND `moder`=0 '),0);
$r = mysql_result(mysql_query('SELECT COUNT(`who`) FROM `'.prefix.'clicks` WHERE `who`="'.$_USER['login'].'"'),0);
$pll = $l-$r;
$pll++;
 
 
echo 'Показано: <strong>'.$_USER['numlink'].'</strong> ссылок из <strong>'.$pll.'</strong> доступных | <a href="/?mode=go&amp;'.rand(0,9999).'">Обновить</a><div class="lines"></div>';
 
 
$col = mysql_result(mysql_query('SELECT COUNT(`id`) FROM `'.prefix.'url` WHERE `id_user`="'.$_USER['id'].'"'),0);
if($col == 0)
{
echo 'Для того чтобы переходить по ссылкам, Вам нужно создать хоть одну плошадку!';
break;
}
 
 
$re=mysql_query("SELECT u.login, l.id, l.nazv FROM `".prefix."users` as `u`, `".prefix."url` as `l` WHERE u.cfrom > u.cto and l.id_user = u.id and l.activ = 0 and l.moder = 0 and l.id_user <> '".$_USER['id']."' and l.id not in (SELECT `to` FROM `".prefix."clicks` WHERE `who`='".$_USER['login']."' ) ORDER by rand() LIMIT 1,".$_USER['numlink'].";");
 
 
while($ress=mysql_fetch_array($re))
{
echo '<div class="url">
&raquo; <a href="/?mode=gook&amp;to='.$ress['login'].'&amp;id='.$ress['id'].'">'.$ress['nazv'].'</a>
</div>';
}
if ($pll==0) { echo 'Нет доступных ссылок! Зайдите позже...'; }
это из клик клуба.
#2. Gemorroj On (107)
Administrator
2010.03.30 22:10
Anwap написал:
`cfrom`<=`cto`
шо это?
#3. Anwap Off (0)
Участник
2010.03.30 23:11
cfrom-это сколько переходов совершил юзер по площадкам, cto-это сколько переходов по его площадкам
#4. Gemorroj On (107)
Administrator
2010.03.31 00:12
Код:
span style="color: #0000BB"><?php// сделать поля activ и moder типом ENUM// ну и нужно расставить индексы,// на основе этого кода можно сказать только что нужен однозначно индекс не поле who таблицы clicks// Это тут ни к чему, сбрасывает кэши// mysql_query('OPTIMIZE TABLE `' . prefix . 'url`');// mysql_query('OPTIMIZE TABLE `' . prefix . 'users`');mysql_query('UPDATE `' . prefix . 'url`SET `activ`="1"WHERE `activ` = "0"AND `moder` = "0"AND `id_user` IN (SELECT `id` FROM `' . prefix . 'users` WHERE `cfrom` <= `cto`)');mysql_query('UPDATE `' . prefix . 'url`SET `activ` = "0"WHERE `activ` = "1"AND `moder` = "0"AND `id_user` IN (SELECT `id` FROM `' . prefix . 'users` WHERE `cfrom` > `cto`)');$l = mysql_result(mysql_query('SELECT COUNT(1)FROM `' . prefix . 'url`WHERE `id_user` <> ' . intval($_USER['id']) . 'AND `activ` = "0"AND `moder` = "0"'), 0);// на поле who поставить индекс, если не стоит$r = mysql_result(mysql_query('SELECT COUNT(1)FROM `' . prefix . 'clicks`WHERE `who` = "' . mysql_real_escape_string($_USER['login']) . '"'), 0);$pll = $l - $r;$pll++;echo 'Показано: <strong>' . $_USER['numlink'] . '</strong> ссылок из <strong>' . $pll . '</strong> доступных | <a href="/?mode=go&amp;' . mt_rand(0,9999) . '">Обновить</a><div class="lines"></div>';$col = mysql_result(mysql_query('SELECT COUNT(1)FROM `' . prefix . 'url`WHERE `id_user` = ' . intval($_USER['id'])), 0);if (!$col) { echo 'Для того чтобы переходить по ссылкам, Вам нужно создать хоть одну плошадку!'; break;}// в этом запросе может быть огромная проблема при большом кол-ве записей// ORDER BY RAND() - это крамольный пездец$re = mysql_query('SELECT u.login, l.id, l.nazvFROM `' . prefix . 'users` as `u`,`' . prefix . 'url` as `l`WHERE u.cfrom > u.ctoAND l.id_user = u.idAND l.activ = "0"AND l.moder = "0"AND l.id_user <> ' . intval($_USER['id']) . 'AND l.id NOT IN (SELECT `to` FROM `' . prefix . 'clicks` WHERE `who` = "' . $_USER['login'] . '")ORDER BY RAND() LIMIT 1, ' . intval($_USER['numlink']));while ($ress = mysql_fetch_array($re)) { echo '<div class="url">&raquo; <a href="/?mode=gook&amp;to=' . htmlspecialchars($ress['login']) . '&amp;id=' . $ress['id'] . '">' . htmlspecialchars($ress['nazv'], ENT_NOQUOTES) . '</a></div>';}if (!$pll) { echo 'Нет доступных ссылок! Зайдите позже...';}
#5. Anwap Off (0)
Участник
2010.03.31 01:01
а сколько записей считается много в том запросе где коментарий написан?
Очень благодарен за код!При том коде что раньше был время генерации было минимальное 11 секунд,при около 300 ссылок,когда поставил твой код время генерации стало около 0.0391
#6. Gemorroj On (107)
Administrator
2010.03.31 09:09
нужно тестить, думаю, проблемы начнутся с тысяч 50 -100. дело в том, что при ORDER BY RAND СУБД физически выбирает ВСЕ записи в таблие, помещает их во ременную таблицу и из нее уже выбирает случайные.
#7. Anwap Off (0)
Участник
2010.04.24 21:09
А вот взгляни как можно этот код переписать?
Код:
$sql = mysql_query("SELECT `id`,`login` FROM `ma_anket` order by `id` desc;");
while ($r = mysql_fetch_array($sql))
{
$res = mysql_num_rows(mysql_query("SELECT `login` FROM `ma_anket` WHERE `pa`='".$r['id']."' AND `pa`<>'1'"));
if ($res>0)
$arr[$r['login']] = $res;
}
arsort($arr);
$i=1;
foreach($arr as $key=>$value)
{
echo $i.') '.$key.' ['.$value.' чел.] <br/>';
 
$i++;
}
#8. Gemorroj On (107)
Administrator
2010.04.24 21:09
Код:
$sql = mysql_query('
SELECT t2.`login`, (SELECT COUNT(1) FROM `ma_anket` AS t1 WHERE t1.`pa` = t2.id AND t1.`pa` <> 1) AS `cnt`
FROM `ma_anket` AS t2
GROUP BY t2.login
HAVING `cnt` > 0
ORDER BY t2.`id` DESC
');
$i = 1;
while ($r = mysql_fetch_assoc($sql)) {
echo $i++ . ') ' . $r['login'] . '[' . $r['cnt'] . ']<br/>';
}
если я правильно понял задачу.
#9. Anwap Off (0)
Участник
2010.04.24 22:10
Спасибо,как раз то что нужно!
Страниц: 1
Главная
WEB
PunBB Mod v0.6.2
0.016 s