"подходящие вьюхи и хранимые процедуры" - первый раз слышу об этом, можно объяснить что это?
про хранимые процедуры немного почитал тут на форуме, это mysql 5, у меня же 3.23.53
Вобще сервер на котором все это дело будет работать дуал ксеон 3ггц, опера 4 гига, винты сата рейд 10, база mysql
Впринципе нехотелось бы отводить весь сервер под этот проект.
Пока запланировалась планка предела в миллион анкет, теми примитивными способами которыми я пытался решить эту задачу, нереально довести даже до 100к анкет.
Пока что ограничился расчетом позиции только для всех записей в целом, сделано это так:
отдельная таблица сортировки
PHP:
CREATE TABLE `position` (
`userid` int(10) unsigned NOT NULL default '0',
`county` smallint(5) unsigned NOT NULL default '0',
`region` smallint(5) unsigned NOT NULL default '0',
`sity` smallint(5) unsigned NOT NULL default '0',
`pos` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`userid`),
KEY `crs` (`county`,`region`,`sity`),
KEY `pos` (`pos`)
) TYPE=MyISAM;
Последняя добавленная анкета имеет максимальный номер `pos`, самая нижняя анкета 0
Скрипт по крону сдвигает все записи до 0 и по счету, т.к какието анкеты могут быть подняты выше в процессе работы сайта. определить позицию в такой базе легко выбрал MAX и вычислил на каком месте от MAX конкретная анкета.
Но по такой базе почти нереально определить позицию относительно `county`,`region`,`sity`, да и обновлять таблицу по крону тоже достаточно долго, у меня 100к записей на домашнем компе обновлялись 20 мин.
В общем ниче умнее придумать неудалось, готовых примеров нигде невстречал.