Вы должны быть более чем хорошо, используя этот подход с 10 ^ 6 строк. В настоящее время мы используем нечто очень похожее со смешанными данными о клиентах, дифференцированными по идентификатору учетной записи с 10 ^ 8 строками, и вообще не испытываем проблем с производительностью на скромном оборудовании.
Убедитесь, что у вас есть определенные индексы, которые охватывают user_id и labgroup_id.
Помните, что MySQL может использовать только один ключ на запрос. Посмотрите на ваш типичный шаблон запроса. Если люди будут использовать несколько столбцов в предложениях where, создайте составные ключи, включающие часто используемые столбцы, которые также обеспечивают хорошую дифференциацию (то есть помогают сузить строки ... столбец да / нет - плохой ключ, но столбец с множеством различных значений, часто используется в предложении where может быть хорошим кандидатом).
Включите журнал медленных запросов MySQL (или получите коммерческий анализатор запросов или его 30-дневную пробную версию) и посмотрите, какие запросы занимают много времени. Используйте команду EXPLAIN, чтобы выяснить, какой индекс используется и как. Если определенный запрос часто появляется в журнале медленных запросов и / или с очень длительным временем выполнения, рассмотрите возможность изменения ваших индексов или добавления нового.
Убедитесь, что my.cnf правильно настроен для вашей среды. Стандартная конфигурация почти всегда очень плохая. Вот хорошее руководство к этому.