Лучшая оптимизация определяется запросами, которые вы выполняете, а не структурой ваших таблиц.
Если вы хотите использовать разделение, this can be a great optimization, если схема разбиения поддерживает запросы, которые необходимо оптимизировать. Например, вы можете разделить на американское государство, и это поможет запросам в отношении данных для определенного состояния. MySQL поддерживает «обрезку разделов», так что запрос будет работать только против определенного раздела, но только в том случае, если в вашем запросе указано определенное значение для столбца, который вы использовали в качестве ключа раздела.
Вы всегда можете проверить, является ли раздел обрезка эффективна с помощью EXPLAIN ПЕРЕГОРОДКИ:
EXPLAIN PARTITIONS
SELECT ... FROM MyTable WHERE state = 'NY';
Это должно сообщить, что запрос использует один раздел.
Если вам нужно, например, запускать запросы по дате, то разделение не помогло бы; MySQL должен будет повторить запрос для всех 50 разделов.
EXPLAIN PARTITIONS
SELECT ... FROM MyTable WHERE date > '2013-05-01';
Это будет список всех разделов. Для запроса всех разделов немного накладных расходов, поэтому, если это ваш типичный запрос, вы, вероятно, должны использовать разбиение по дате по диапазону.
Итак, выберите ключ раздела с учетом запросов.
Любая другая техника оптимизации следует аналогичному шаблону - она помогает некоторым запросам, возможно, в ущерб другим запросам. Поэтому убедитесь, что вы знаете , который требует, перед тем как принять решение о методе оптимизации.
Re вашего комментария:
Конечно, есть много баз данных, которые имеют 40 миллионов строк или больше, но имеют хорошую производительность.Они используют различные методы, в том числе (в произвольном порядке):
Моя точка зрения заключается в том, что вы не можете выбрать оптимальный метод оптимизации до тех пор, пока не найдете интересующие вас запросы. Кроме того, лучший выбор может отличаться для разных запросов и может даже со временем меняться по мере роста данных или трафика. Оптимизация - это непрерывный процесс, потому что вы не будете знать, где ваши узкие места, пока вы не увидите, как растут ваши данные, и трафик запросов, получаемый вашей базой данных.
Используйте разметку, подумайте еще о 200 полях в таблице, это определенно должно быть нормализовано. – rMX
@rMX, я читал, что 200-300 столбцов более 30-40 таблиц, поэтому в среднем 5-10 столбцов на таблицу. –