Но, в первой таблице - 100 000 строк, во второй 1 000 строк.
Нажмите, чтобы раскрыть...
это всё ваши шиндоусы. джоин 100к и 1к это пыль. в любом случае на поле login нужно вешать индекс.
можешь попробовать ещё так:
CREATE TEMPORARY TABLE tt SELECT id FROM t2 WHERE id IN (SELECT id FROM t1) AND login='admin';
SELECT id, name, sname, city, street, flat, email, hphone, mphone FROM t1
WHERE id IN (SELECT id FROM tt)
*это если t2 таблица на 100к записей. в противном случае должно даже без индексов всё летать.
вообще структура какая-то очень странная, что нужно из таблицы логов выдирать юзера. user_id должен присутствовать в t1 по дизайну