MySQL — 100 млн записей, разбиение на 2 таблицы или 1?
Добавляете в одну таблица индекс на своё поле категория и получаете таблицу разбитую на две виртуальные части, при запросах с категорией будет использоваться этот индекс, что и так само собой отсекает вторую половину таблицы.
Зачем разбивать одни данные на две таблицы-то? Почему не на 5 таблиц, чтобы еще один столбец раскидать на разные таблицы, так до бесконечности можно усложнять и будет какая-то каша.Что будет лучше с точки зрения оптимизации и скорости
На выходе всё в итоге зависит от того что за данные, что с ними делаете, как читаете, как часто читаете/пишете и т.д.
т.е. всё индивидуально. При этом есть индексы и партиции которые решают все эти вопросы, особенно на таком малом объёме данных.
100кк записей это не так много.
Александр Аксентьев я так понимаю там одним индексом не обойдешься, скорее всего нужно фильтровать еще по другим полям - значит нужен будет сложный индекс, и при этом правильный (зависит от порядка выполнения запроса).
LaJokero , надеюсь про Нормализацю данных вы уже знаете. Далее читайте вот это: https://ruhighload.com/%D0%98%D0%BD%D0%B4%D0%B5%D0...
Далее пробуйте разные индексы и тестируйте производительность (напишите тест скрипт для этого, который сбрасывает кеши (дисковый и БД)) - естественно, на тестовом сервере, потому что добавление или удаление индекса на таблице такого размера может заблокировать ее на пару часов.
Разделить таблицу тоже можно, но, не зная структуры таблиц и ваши SQL запросы - советовать сложно.