Давайте я включу наконец режм телепатии и попробую угадать что вы хотели сделать.
Вы записываете в табличку user_id и время всех сообщений
(это у вас получилось)
Дальше вы хотите сравнить три последние(?) записи и проверить нет ли среди них повторяющихся user_id за послендие две секунды
(вместо этого вы выбираете данные по трем записям из НАЧАЛА таблицы и делаете это почему-то шестью запросами)
Как можно исправить?
Выбрать только записи за последние две секунды
select user_id, time ftom myTable where time > now() - interval 2 second
Более того, можно сразу выбрать только тех юзеров, которые повторяются!
select user_id ftom myTable
where time > now() - interval 2 second
group by user_id
having COUNT(*) > 1
Еще круче - можно вообще не мучать базу а просто хранить в памяти массив где ключ - время, а user_id - значение. Выбрасывать записи старше Х секунд и искать повторяющиеся user_id.
По нагрузке сэкономите на несколько порядков.