Никогда, никогда, никогда не объединяйте несколько логических полей в одно поле с разделителями-запятыми.
Правильный способ - создать несколько строк.
Если есть какая-то причина производительности, которая требует, чтобы вы использовали одну строку, по крайней мере, сделайте несколько полей в строке. Но, тем не менее, почти никогда нет веских причин для этого. Сначала сделайте хороший дизайн.
Вы когда-нибудь хотели знать все записи, скажем, с type = 2? С несколькими строками это легко: «выберите content_id из mytable, где type = 2». В поле «забито» вам нужно будет сказать «выберите content_id из таблицы, где введите«% 2% »». О, кроме того, что происходит, если существует более 11 типов? Приведенный выше запрос найдет «12». Хорошо, вы могли бы сказать "где тип как '%, 2,%'". За исключением того, что не работает, если 2 является первым или последним в списке. Даже если вы нашли способ сделать это надежно, поиск LIKE с начальным% означает последовательное чтение каждой записи в таблице, что очень медленно.
Насколько велико будет поле для вскармливания? Что если строка типов слишком велика, чтобы уместиться в вашем максимуме?
Есть ли у вас какие-либо данные о типах? Если вы создадите вторую таблицу с ключом «type» и, скажем, описанием этого типа, как вы присоединитесь к этой таблице. С несколькими строками вы можете просто написать «select content_id, type_id, description из типа объединения контента с использованием (type_id)». С забитым полем ... не так просто.
Если вы добавите новый тип, как вы сделаете его согласованным? Предположим, раньше говорилось «3,7,9», а теперь вы добавляете «5». Вы можете сказать «3,7,9,5»? Или они должны быть в порядке? Если они не в порядке, невозможно проверить на равенство, потому что «1,2» и «2,1» не будут выглядеть одинаково, но они действительно эквивалентны. В любом случае обновление поля типа теперь становится программой, а не отдельным оператором SQL.
Если есть какое-то тривиальное увеличение производительности, оно того не стоит.