A melhor e melhor maneira de associar o valor máximo de outra tabela

Eu quero encontrar a maneira ideal de executar esta consulta, aqui os detalhes, digamos o seguinte são minhas tabelas com seus dados:

-- User Table
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM;

-- Entries
INSERT INTO `users` VALUES (1,'user_a');
INSERT INTO `users` VALUES (2,'user_b');
INSERT INTO `users` VALUES (3,'user_c');

-- User Log Table
DROP TABLE IF EXISTS `user_log`;
CREATE TABLE `user_log` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `idrel` int(11) NOT NULL,
  `event` varchar(20) NOT NULL,
  `log` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `idrel` (`idrel`,`log`)
) ENGINE=MyISAM;

-- Entries
INSERT INTO `user_log` VALUES (1,1,'log1','2014-01-01 13:00:00');
INSERT INTO `user_log` VALUES (2,1,'log2','2014-01-02 13:00:00');
INSERT INTO `user_log` VALUES (3,2,'log3','2014-01-03 13:00:00');
INSERT INTO `user_log` VALUES (4,2,'log4','2014-01-04 13:00:00');
INSERT INTO `user_log` VALUES (5,3,'log5','2014-01-05 13:00:00');
INSERT INTO `user_log` VALUES (6,3,'log6','2014-01-06 13:00:00');

E quero consultar os usuários que ingressam no último evento registrado, encontrei duas maneiras de fazer isso, mas não sei qual é a melhor (falando sobre velocidade quando as duas tabelas crescem) ou se existe outra maneira, aqui estão minhas consultas:

-- Query 1
SELECT
    u.id,
    u.name,
    l2.event as last_record
FROM
    users AS u
INNER JOIN
    (
        SELECT
            idrel,
            MAX(id) as last_id
        FROM user_log
        GROUP BY
            idrel
    ) AS l1
    ON (l1.idrel = u.id)
INNER JOIN
        user_log AS l2
        ON (l2.id = l1.last_id);

O que me dá esse resultado:

+----+--------+-------------+
| id | name   | last_record |
+----+--------+-------------+
|  1 | user_a | log2        |
|  2 | user_b | log4        |
|  3 | user_c | log6        |
+----+--------+-------------+
3 rows in set (0.00 sec)
-- Query 2
SELECT
    u.id,
    u.name,
    (
        SELECT event FROM user_log WHERE idrel = u.id ORDER BY log DESC LIMIT 1
    ) AS last_record
FROM
    users AS u;

E o resultado:

+----+--------+-------------+
| id | name   | last_record |
+----+--------+-------------+
|  1 | user_a | log2        |
|  2 | user_b | log4        |
|  3 | user_c | log6        |
+----+--------+-------------+
3 rows in set (0.00 sec)

Qual poderia ser o melhor caminho? Existe alguma outra maneira melhor?

questionAnswers(1)

yourAnswerToTheQuestion