У меня есть база данных с миллионами строк, что немного. Все они отсортированы по городам с указанием city_id (проиндексирован). Я хотел показать самый последний пост с:
SELECT * FROM table FORCE INDEX(PRIMARY, city_id) WHERE city_id=1 ORDER BY 'id' DESC LIMIT 0,4
id также помечен как основной. До добавления индекса силы потребовалось 5,9 секунды. Я нашел это решение на SO, и оно отлично работало. Запрос теперь занимает 0,02 секунды.
Проблема в том, что это работает только в city_id 1, когда я меняю этот город на 2 или 3 или что-то еще, кажется, что оно возвращается к 6 секундам.
Я не уверен, как работает mysql. Индекс лучше по частым запросам или я что-то здесь упускаю.