Я читал о проблемах со скоростью, связанной с получением случайной строки через MYSQL и PHP, и удивлялся, как мой код может быть улучшен для скорости.
У меня есть информация о баннере в моей базе данных в таблице, называемой «баннеры», и я хочу отобразить случайный баннер по отношению к позиции на странице и добавить +1 к view_count для этого баннера. Мой метод работает, но для загруженного сайта, где это происходит при каждой загрузке страницы, это можно улучшить для скорости? Спасибо
/* Get banners for position 1 then choose a random one to display */
$banners = mysql_query("SELECT id,title,banner_url,destination FROM ".TBL_BANNERS." WHERE position = '1' AND status = '1'");
$banner_count = mysql_num_rows($banners) - 1;
$rand_offset = mt_rand(0,$banner_count);
$result = mysql_query("SELECT id,title,banner_url,destination FROM ".TBL_BANNERS." LIMIT $rand_offset, 1 ");
$banner_id = mysql_result($result,0,"id");
$banner_title = mysql_result($result,0,"title");
$banner_url = mysql_result($result,0,"banner_url");
$banner_dest = mysql_result($result,0,"destination");
/* Add view to this banner */
$database->addViewToBanner($banner_id);
Последняя функция использует запрос:
"UPDATE banners SET view_count = view_count+1 WHERE id = '$banner_id'"
Я также должен сказать, что, вероятно, не будет более 100 записей в таблице «баннеров» одновременно, но в идентификаторе будут дыры. Идентификаторы могут подняться до 200, но только половина из них все еще будет существовать.