A JOIN
, даже на PRIMARY KEY
, требует в несколько раз больше времени, чем последовательное сканирование.
Конечно, лучше посмотреть таблицу, но я считаю, что лучше держать их вместе.
Если столбцы, которые вы хотите разделить, маленькие и имеют большую мощность (много разных значений), то оставьте их в таблице.
Однако, если то, что вы делаете, нормализует (в отличие от простого разделения таблицы), то нормализованный дизайн может быть быстрее.
Например, если ваши данные выглядят так:
id value
1 Really really long value 1
2 Really really long value 1
3 Really really long value 1
…
1000 Really really long value 2
1001 Really really long value 2
1002 Really really long value 2
…
сканирование этой таблицы занимает много времени, так как значения большие.
Нормализация таблицы даст следующее:
id value
1 1
2 1
3 1
…
1000 2
1001 2
1002 2
…
val_id value
1 Really really long value 1
2 Really really long value 1
Сканирование строк с 4
-байтовыми целыми числами выполняется намного быстрее, чем VARCHAR
с тысячными байтами, и запрос во втором исполнении будет выполняться быстрее, даже несмотря на дополнительные JOIN
.