Обычно избегание объединений в больших таблицах является хорошей практикой для повышения скорости, но это действительно зависит от вашего использования.
Если вы планируете выполнять агрегирование по таблице действий, я настоятельно рекомендую использовать подход с одной таблицей.
Если все, что вы делаете, это выборки из одной строки (пользователь сделал это конкретное действие), то, возможно, использование разных таблиц будет более эффективным. Вы сможете запросить конкретную таблицу, и поскольку она меньше, она может быть более отзывчивой.
Практика, которую я часто вижу, имеет общие поля (число1, число2, ... строка1, строка2 ...) и таблицу сопоставления, которая описывает каждое поле в соответствии с типом действия. Преимущество этой практики состоит в том, что таблица более плотно заполнена. Недостатком является то, что понимание данных в таблице становится затруднительным, а синхронизация сопоставления - это тяжелая работа. Я бы использовал его, только если есть веская причина. Например, у вас есть более пятидесяти различных типов действий (в этом случае управление пятьдесят таблицами - это тоже не пикник).