Хорошие вопросы, на самом деле.
> Тогда это уже не "карточка метки" будет, а какая-то "брошюра метки", или "томик метки"... гм, некстати вспомнилась "метка тома"...
Не важно. Количество в данном случае нам не важно. Главное что все фамилии собраны в одном месте, и не надо перебирать каждую карточку в картотеке.
> Потом, как это "сразу открываешь нужный ящик"? их же больше одного? Всё равно надо хотя бы "первые буквы ящика" просмотреть, сличить с заданием.
Верно. Но это все равно быстро. Ты просто не хочешь представить себе разницу между перебором ВСЕХ карточек во ВСЕХ ящиках и открытие только нужных ящиков.
Примечание. Если ситуация именно такая, как ты намекаешь - то есть БД сочтет, что пользователей, относящихся к данной метке подавляющее большинство, то она будет таки перебирать пользователей по одному. Так работает оптимизатор запросов.
Но если это достаточно редкая метка, то выигрыш будет очень значительный.
> Потом так же карточки перебирать, по одной.
Неверно. У хорошего конторщика карточки в ящике тоже отсортированы по алфавиту. И поиск нужной фамилии занимает минимальное время.Никаким перебором по одной здесь и не пахнет. Аналогия именно что идеальная, с поправкой на то что компьютер находит карточку еще быстрее.
> У меня сложилась типичная структура работы с такими "метками" - именно "через пробел".
Мощность современных компьютеров до поры до времени прощает тебе кривую архитектуру. И возможно ты никогда не выйдешь на те объемы, когда это станет критичным для скорости. В конце концов, тот факт что сейчас пышным цветом расцвели noSQL датабазы, в которых данные так и лежат навалом, как раз и является следствием возросшей мощности компьютеров - кидай, перемолотят.
Но если ты выходишь за пределы возможностей сервера, система встает колом.
Собственно,если ты до сих пор не интересовался результатом EXPLAIN для твоих запросов, то разговаривать с тобой, в сущности, не о чем. Ты так и будешь считать то твоя система идеальна. Так что давай вернемся к этому вопросу позже. В конце концов, на работающей под большой нагрузкой системе с большим количеством уже написанного кода переделывать структуру БД гораздо увлекательнее.
> Если нет, делаю полнотекстовый индекс для "многометочного" поля (и тогда опять нормальная).
Ну, если никогда не приходится редактировать метки - сливать например дубликаты или удалять ненужные - то и хорошо. В каком-то смысле я люблю любителей работать руками. Ведь есть же конструкторы-моделисты, которые тратят годы на то чтобы своими руками собрать какую-нибудь модель, которую можно купить за недельную зарплату. Или писать кропотливо отдельную программу для операции, которую можно выполнить простым SQL запросом.