Как исправить код или изменить реализацию?
Kill it with fire и написать нормально. Ну, это если время позволяет. Хотя сдается мне, что в этом вы проковыряетесь ничуть не меньшее количество часов, чем потратили бы на написание с нуля.
Давайте я включу наконец режм телепатии и попробую угадать что вы хотели сделать.
Вы записываете в табличку 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.
По нагрузке сэкономите на несколько порядков.