Sunsh1ne: Можно через CONCAT и GROUP_CONCAT, но потом могут быть сложности с обратным разделением, в статье могут быть и запятые, и скобки и кавычки...
Добавлю, что эти байты не только хранятся, но ещё и в больших количествах передаются из базы в приложения и обратно. Да и на скорость построения индексов, особенно составных, размер и тип данных тоже влияет.
AVKor: "А теперь забудьте то, чему вас учили раньше" - стандартное начало любого курса в институте.
За пределами школьной математики существуют многозначные функции. Такая функция для каждого элемента первого множества ставит в соответствие некоторое подмножество элементов второго множества, причём как минимум одно из этих подмножеств состоит более, чем из одного элемента.
Rou1997: Работа со строками там - это разве что сравнение в лексере, и то можно заменить на посимвольный конечный автомат. Ну ещё работа со строковыми константами в оптимизаторе, но это тоже мелочи.
Rou1997: Зачем готовый, по грамматике языка строится лексер, синтаксический анализатор (парсер), семантический анализатор, генератор и оптимизатор кода. Посмотрите, например, классику - книгу красного дракона.
Ну, операции со строками компилятору нужны по минимуму, так же, как и регулярки. И то и другое успешно заменяется гораздо более мощными конечными автоматами и парсерами.
Макс: Точное время посчитать невозможно, поскольку хэш может совпасть на первой же строке, а может не совпасть и на первых 2128 строках. Если известен набор символов пароля и его максимальная длина, то можно оценить максимальное время полного перебора, {размер_алфавита}{длина_пароля}/{скорость_перебора}.
Александр Лозовой: При цене этого CyberData V3 VoIP Zone Controller в $400 проще будет взять простые SIP-телефоны, поддерживающие пейджинг и подключиться к их динамикам. Кроме того, этот агрегат четырёхканальный, и если надо обеспечить связь в разнесённых зонах, то придётся тянуть аудиокабель, а это не есть гуд.
exten => s,1,ChanIsAvail(DAHDI/g1/100)
same => n,GotoIf($["${AVAILORIGCHAN}"=""]?context,extension,1)
same => n,ChanIsAvail(DAHDI/g1/101)
same => n,GotoIf($["${AVAILORIGCHAN}"=""]?context,extension,1)
same => n,Dial(DAHDI/g1/100&DAHDI/g1/101)