делаешь ключ составным из полей post_id, user_id, ip_address, session_id, created_date, делаешь уникальным, и при вставке делаешь инсерт ор апдейт он дупликэйт. Немного черезпопно, но задачу вроде решает.
пока тоже рассматривается такой вариант , но придется таблицу "перешерстить" и в кодах учитывать это новое поле.
Если уже тормозит база/код, все - без рефакторинга в любом случае не обойтись, надо брать и делать.
Как вариант: поставить редис и хранить "внутридневной" ключ в нем, например хеш от этих значений, с экспайром до конца дня. При наличии ключа ничего не делать, сократится число запросов в бд, а редис отрабатывает практически моментально и уж точно гораздо быстрее дб.