powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с алгоритмом алфавитного указателя
5 сообщений из 5, страница 1 из 1
Помогите с алгоритмом алфавитного указателя
    #33303547
127.0.0.1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И так дано:
таблица на примерно 30000 записей, в табличку постоянно добавляются и удаляются записи. Формат таблицы :
Код: plaintext
1.
2.
3.
ID 	mediumint( 9 ) 	 	 	
Name 	varchar( 255 )
PRIMARY KEY (ID)
у поля Name charset utf8, т.к. название может быть как русское так и английское.
Мне сейчас нужну сделать к этой таблице алфавитный указатель, пишу в основном на Perl. Вывод енстественно предпологается постраничный. Вопрос в том как правильно с точки алгоритма и наменьших трудозатрат это сделать. В мыслях есть пока два варианта:

1. Ввиду большого размера таблицы добавить к базе табличку CharForms вида:
Код: plaintext
1.
2.
3.
4.
ID 	        mediumint( 9 ) 	 	 	
Char_form 	varchar( 255 )
Sec_ID        mediumint( 9 )
PRIMARY KEY (ID)
Где в Char_form хранить начальные буквы (А, Б и т.д.) или группы из 3-х букв (ААА, ААБ и т.д.) со ссылками на начальные буквы через Sec_ID. Далее к основной таблице добавляем поле Sec_ID_CharForms mediumint(9) со ссылкой на ID из CharForms и через этакий изврат, через дополнительную (правда одноразовую) пересортировку всей базу, через переписывания процедуры добавления/удаления записей получаем искомое.
2. Другой вариант предполагает использование регулярных выражений Perl (Или самого MySQL, если они такие есть), но если это делать через Perl, то это каскад запросов, а сервер не резиновый и база в будущем будет расти.
...
Рейтинг: 0 / 0
Помогите с алгоритмом алфавитного указателя
    #33304224
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для второго варианта нет необходимости использовать регулярные выражения (которые, впрочем, в MySQL наличествуют), достаточно строковых функций того же MySQL. За более подробной информацией либо обратитесь к документации MySQL, либо опишите подробнее предполагаемый принцип постраничного разбиения.
...
Рейтинг: 0 / 0
Помогите с алгоритмом алфавитного указателя
    #33304356
127.0.0.1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Начну с конца:
DocAl либо опишите подробнее предполагаемый принцип постраничного разбиения.
Ну тут всё просто, через указание LIMIT в запросе и передачу верхнего и нижнего значений. А вот как сделать алфавитный указатель меньшей кровью я уже сломал голову.
DocAlдостаточно строковых функций того же MySQL.
Я гляну конечно, но может просто я не верно объясняю, чего хочется. Душа просит примерно следующего: есть русский и английский алфавит и для каждой буквы выводится количество имеющихся в таблице записей начинающихся с этой буквы, если оно отлично от нуля, далее при выборе буквы, выводятся трёхбуквенные сочетания букв, начинающиеся на выбранную букву, при наличии в таблице записей начинающихся на эти сочетании, ну и далее постраничный вывод записей.
...
Рейтинг: 0 / 0
Помогите с алгоритмом алфавитного указателя
    #33304503
RFT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
select distinct left(field, 1 ) ...
Это первый линк, далее
Код: plaintext
select distinct left(field, 3 ) where field like '<принятое значение от первого линка>%'
Это второй, ну а далее
Код: plaintext
select distinct left(field, 3 ) where field like '<принятое значение от второго линка>%'
...
Рейтинг: 0 / 0
Помогите с алгоритмом алфавитного указателя
    #33304511
RFT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В последнем шаге вместо distinct left(field,3) - надо те поля, которые тебе нужны. Я просто поторопился.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с алгоритмом алфавитного указателя
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]