Пройти по массиву, составить список всех свойств.
Потом снова перебирать массив и для каждой строки добавлять свойства из списка, если есть то его, если нет - то пустоту
Лентюй, в целом согласен, пример хороший. Но опять же, человек, который знает такое слово, не будет спрашивать, как перебрать значения. Куда чаще встречается случай, когда бд используют как набор бумажных карточек, не зная никакой другой модели данных
А по поводу того, что написал тов. Лентюй, надо понимать, что дядя шутит. Он развлекается для собственного удовольствия, а не пытается помочь с проблемой. Которая, чтобы было понятно, не является какой-то дискуссионной.
Как раз наоборот, вопрос как хранить данные в бд этот вопрос примерно уровня "как надевать штаны". И вопрос у вас сейчас, "как мне ловчее надеть штаны через голову". Для вас, в силу неопытности, оба варианта равнозначны, и вы мучаетесь выбором, через голову надевать, или через ноги.
Но за исключением каких-то экстремальных случаев штаны надевают через ноги. А данные в бд хранят не через запятую, а в отдельной таблице в отдельных ячейках
правильнее заранее заносить строчки в эту табл циклом, каждую отдельной строкой
И работа с этими данными будет в сотни раз быстрее. Потому что правильно.
Только без всяких временных таблиц. Заносить только в постоянные
А какая проблема просмотреть 12 миллионов записей?
Сделайте таблицу, и попробуйте просмотреть её. Просто чтобы получить представление о скорости работы бд.
50 минут - это явная аномалия. Запрос конечно надо оптимизировать, и скорее всего через materialized view, но при "просмотре всей таблицы" все равно скорость должна составлять максимум десятки секунд, а не минут.
Потом снова перебирать массив и для каждой строки добавлять свойства из списка, если есть то его, если нет - то пустоту