Sprawa teoretycznie prosta
Dla uproszczenia 2 tabele:
USER
id INT
LOGIN
id INT
id_user INT
date datetime
Chcę wybrać 100 ostatnio zalogowanych użytkowników wraz z datą logowania.
Teoretycznie sprawę powinno rozwiązać:
Kod
SELECT *, (SELECT max(date) FROM login WHERE id_user=u.id) AS 'max_date' FROM user u ORDER BY max_date DESC LIMIT 100
Dla małej bazy może rzeczywiście by się to sprawdziło ale ...
jeśli w tabeli user mamy 145360 rekordów, a w tabeli login 2774138 rekordów, zaczyna się mały problem...
Praktycznie nie starczyło mi nigdy cierpliwości, żeby zapytanie tego typu doprowadzić do końca - kilka minut na pewno nie wystarczy...
Rozumiem, że problem w tym wypadku może powodować ORDER, ale nawet kiedy pozbędę się ORDER BY, a zostawię samo limit 100, ba - nawet limit 1, czas oczekiwania na jakikolwiek rezultat jest niemiłosiernie długi.
Wersja MySQLa 4.1.22
Ma ktoś z Was pomysł jak to obejść?