Z WHERE działa zdecydowanie szybciej
SELECT COUNT( miasto ) AS liczba_obiektow, id_miasta, miasto, powiat, region
FROM oferty
INNER JOIN miasta ON oferty.miasto = miasta.nazwa_miasta
WHERE region
IN ( 12, 11, 14, 15, 17, 18, 19, 70, 20, 21, 22, 23, 24, 25, 27, 28, 30, 32, 31, 48, 68 )
GROUP BY miasto
LIMIT 5
A jeśli chodzi o strukturę tabeli to
tabela "Oferty " - miasto - region
tabela "Miasta" - id_miasta -powiat - nazwa_miasta
Cytat
A czy nie mógłbyś tej liczby (liczba_obeitków) trzymać w formie statycznej w bazie danych (w dodatkowej kolumnie) i przy dodaniu/usunięciu rekordu z drugiej tabeli inkrementować/dekrementować tą wartość? Pozbyłbyś się całego COUNT().
Na pewno byłaby taka możliwość liczba zmienia sie w czasie i musiałbym dopisać jakiś skrypcik w php aby odczytywał aktualny stan i zapisywał jako statycznną liczbę.
Chyba że jest jakiś inny sposób zliczania według ilości ofert w danej chwili.
Wolałbym wykombinować coś w zapytaniu