Twoje zapytanie wydaje się poprawne. Twój problem wydaje się być problemem z wydajnością, a nie logiką. Musisz upewnić się, że zarówno emailaddress
i id
pola są poprawnie indeksowane w bazie danych - w przeciwnym razie przy blisko milionie wierszy oczekiwałbym, że Twoje zapytanie się zawiesi.
(Myślę, że id
prawdopodobnie jest już zindeksowany, ale nie emailaddress
. Zwłaszcza przy łączeniu między tabelami, jeśli jedno z tych pól nie jest indeksowane, będziesz oglądał DUŻO pełnych skanów tabel.)
Edycja:
Widząc swój komentarz, że tak jest, możesz zapoznać się z dokumentacją pod adresem http://dev.mysql.com/doc/refman/5.0/en/create-index.html do tworzenia indeksów. Więc coś takiego:
CREATE INDEX email_index ON emaildata(emailaddress) USING BTREE;