В настоящее время я работаю над своим первым проектом Laravel и работаю с базой данных, в которой есть строки, подобные этой:
id message timestamp
1 first 1500000000
1 second 1510000000
1 third 1520000000
1 fourth 1530000000
2 first 1500000000
2 second 1510000000
3 first 1500000000
4 first 1500000000
4 second 1510000000
4 third 1520000000
4 fourth 1530000000
5 first 1500000000
5 second 1510000000
6 first 1500000000
7 first 1500000000
(фиктивные данные). Я хочу сделать запрос SQL, который возвращает последнее сообщение на основе самой высокой отметки времени. Так, например, если мы посмотрим на первый идентификатор, я хочу, чтобы он возвратил fourth
, потому что отметка времени, связанная с этим сообщением, выше, чем любая другая запись с id = 1
.
Причина, по которой я хочу иметь только 1 запрос для каждого идентификатора, заключается в том, что чем больше запросов мне нужно выполнить, тем больше времени требуется для запуска страницы, что делает работу с пользователем довольно плохой.
Я пробовал несколько вещей, которые я прочитал в Интернете, но безрезультатно. Я попытался использовать DISTINCT
, GROUP BY
и некоторые вопросы, построенные на основе вопросов, с которыми я столкнулся. Я также посмотрел документацию по Laravel, но просто не могу заставить ее работать.
$data = \DB::table('data')
->distinct()
->get();
Пробовал подобные вещи, но теперь, когда я об этом думаю, это, вероятно, просто возвращает уникальные комбинации id, message и timestamp.
В конце я хотел бы получить что-то вроде этого:
id message timestamp
1 fourth 1530000000
2 second 1510000000
3 first 1500000000
4 fourth 1530000000
5 second 1510000000
6 first 1500000000
7 first 1500000000
В любом случае, я был бы очень признателен, если бы кто-то знал, как решить мою проблему.
P.S. По какой-то причине каждый запрос, который я выполняю, для возврата данных занимает около 2 секунд (это можно увидеть в расширении Laravel Debugger). Может ли это быть вызвано большим количеством записей в таблице (3926714)? А может кто-то знает, как сократить количество времени, которое требуется?