Myślę, że zrobienie innego stołu „głosowanie” jest lepsze. Relacja między użytkownikami a głosami wynosi od n do n, dlatego należy utworzyć nową tabelę. Powinno to wyglądać mniej więcej tak:
question id (int) | user id (int) | permanent (bool) | timestamp (datetime)
Stałe pole może zostać użyte do pozostawienia głosów po określonym czasie, tak jak to się dzieje.
Inne pola mogą być dodawane zgodnie z pożądanymi funkcjami.Ponieważ każdy wiersz zajmie co najmniej 16B, możesz mieć do 250M wierszy w tabela przed tabelą używa 4 GB (limit fat32, jeśli jest jedno archiwum na tabelę, co ma miejsce w przypadku MyISAM i InnoDB).
Ponadto, jak wskazuje Matthew Scharley w komentarzu, nie ładuj wszystkich głosów naraz do pamięci (jako pobranie całej tabeli w zestawie wyników). Zawsze możesz użyć klauzuli LIMIT, aby zawęzić wyniki zapytania.