Подтвердить что ты не робот

Лучше ли использовать таблицы вместо типа полей массивов в PostgreSql, когда массивы не превышают 50 элементов?

Или лучше сказано: когда использовать массив в качестве типа данных поля в таблице?

Какое решение обеспечивает лучшие результаты поиска?

4b9b3361

Ответ 1

Я тоже рассматривал эту проблему и вывод, к которому я пришел, - использовать массивы, когда вы хотите исключить объединение таблиц. Количество элементов, содержащихся в каждом массиве, не так важно, как размер используемых таблиц. Если в каждой таблице всего несколько тысяч строк, то объединение 50 подстрочных строк не должно быть большой проблемой. Если вы попадете в 10 или 100 тысяч или строк, вы, вероятно, начнете пережевывать много процессорного времени и дискового ввода-вывода.

Ответ 2

Я избегаю массивов по двум причинам:

  • сохраняя в ячейке более одного значения атрибута, вы нарушаете первую нормальную форму (теоретическую);
  • вам нужно выполнить некоторую дополнительную обработку, не связанную с SQL, каждый раз, когда вам нужно работать с отдельными элементами массивов (практическое, но прямое следствие теоретического).

Ответ 3

Таблицы всегда будут предоставлять лучшие результаты поиска, предполагая, что вы запрашиваете что-то в самом массиве. С помощью подтаблицы вы можете индексировать содержимое тривиально, тогда как с массивом вам нужно будет буквально создать 50 индексов (по одному для каждого потенциального элемента в массиве).

Ответ 4

Я думаю, что массивы должны быть использованы для некоторых пользовательских данных. Но для внешних ключей - лучше использовать таблицу ссылок (или что-то еще, кроме столбца на ключ). Таким образом, у вас есть контроль данных на уровне БД и простые запросы на объединение - вам нужно объединение, даже если они есть в массивах (для полного набора данных), - но массивы гораздо сложнее, чем "стандартный" SQL. PS Извините, плохой английский