Я не эксперт по MySQL, но до сих пор мне удавалось собрать воедино то, что работает.К сожалению, моя последняя попытка в бодрствующем состоянии приводит к смерти сервера, поэтому, очевидно, я делаю что-то, что в целом неэффективно.Может кто-нибудь дать мне подсказку о том, где проблема и как я могу получить те же результаты, не останавливая весь сайт каждый раз?
$sqlbest = "SELECT
wp_postmeta.meta_value
, wp_posts.post_title
, wp_posts.ID
, (TO_DAYS(CURDATE())- TO_DAYS(wp_posts.post_date))+1 AS days
FROM `wp_postmeta` , `wp_posts`
WHERE `wp_postmeta`.`post_id` = `wp_posts`.`ID`
AND `wp_posts`.`post_date` >= DATE_SUB( CURDATE( ) , INTERVAL 1 WEEK)
AND `wp_postmeta`.`meta_key` = 'views'
AND `wp_posts`.`post_status` = 'publish'
AND wp_posts.ID != '".$currentPostID."'
GROUP BY `wp_postmeta`.`post_id`
ORDER BY (CAST( `wp_postmeta`.`meta_value` AS UNSIGNED ) / days) DESC
LIMIT 0 , 4";
$results = $wpdb->get_results($sqlbest);
Он использует количество просмотров постов для расчета просмотров / день для постовопубликованный в последнем, затем упорядочивает их по этому количеству и берет верхние 4.
Я думаю, что я вижу, что это неэффективно, так как он должен рассчитывать эти просмотры / день каждый раз для нескольких тысяч сообщений, но яне знаю, как сделать это лучше
Заранее спасибо.