У меня есть две таблицы базы данных, одна из которых содержит 165 записей. Для каждого из них мне нужно было просмотреть таблицу с 1 миллионом и посмотреть, сколько раз упоминается каждая из этих 165 записей.Подсчет количества результатов из большой базы данных
«odds_provider» имеет 165 записей, «bettingoffer» имеет миллион записей.
$SQL = "SELECT
odds_provider.id AS id,
odds_provider.name AS name,
COUNT(bettingoffer.odds_providerFK) AS betcount
FROM odds_provider
INNER JOIN
bettingoffer
ON bettingoffer.odds_providerFK = odds_provider.id
WHERE
odds_provider.active = 'yes'
GROUP BY
odds_provider.id,
odds_provider.name
ORDER BY betcount DESC";
$result = mysql_query($SQL);
while ($db_field = mysql_fetch_assoc($result)) {
echo $db_field['id'] , " " , $db_field['name'] , " " , $db_field['betcount'] , "</BR>";
}
Это делает то, что предназначено, но требуется навсегда. Есть ли более быстрый способ?
Какие индексы у вас есть на 2 столах? Можете ли вы попробовать в приглашении MySQL (или через PHPMyAdmin и сообщить нам вывод «EXPLAIN SELECT ...»? –
, сколько различных odds_providerFK находится в таблице ставок, есть ли много неактивных? – newtover
395 всего, 166 активных. –