Коля Дубр

Коля Дубр
Рейтинг
153
Регистрация
02.03.2005
Должность
NetCat
Интересы
cms, музыка, лингвистика
danger4k:
ЗЫ не могу вспомнить почему у меня нос болит..а правый кулак...кто то обижал хомяка в гаслтуке?

Ага, кажется это был я 😂

Зачем хранить данные, которые можно вычислить? :) Так быстрее? А кто сказал, что это - узкое место? Не стоит оптимизировать еще не написанный код ;)

Навскидку за 15 минут придумал что-то такое.

Имеем 3 таблички - fields, values, и profiles, последняя устанавливает связь "пользователь - параметр - значение". Выбираем все параметры, для которых пользователь №1 указал хотя бы одно значения, и кол-во пользователей, указавших такое же значение:


SELECT
F.name,
V.value,
F.id field_id,
(
SELECT
COUNT(*)
FROM
profiles OP
WHERE
OP.user_id != 1 AND
OP.field_id = P.field_id AND
OP.value_id = P.value_id
) as more
FROM
profiles P,
`fields` F,
`values` V
WHERE
P.user_id = 1 AND
F.id = P.field_id AND
V.id = P.value_id
ORDER BY
F.id

Получаем что-то вроде:


name value field_id more
Знаю языки немецкий 1 0
Знаю языки английский 1 2
А ещё я умею делать сайты 2 1

Остается в цикле обработать повторяющиеся параметры. При подсчет колонки "more" идет поиск по табличке, состоящей из трех числовых столбцов - подозреваю, что здесь узкого места возникнуть не должно. Даже если каждый пользователь заполнит по 10 значений для 10 параметров, мы получим вполне приемлимый миллион записей :) Поиск по текстовым полям (и то, типа VARCHAR) идет только при изменении профиля, что бывает не слишком часто.

Обратите внимание, параметры не фиксированные - можно добавить собственный параметр с собственным же значением, в случае ya.ru это реализовано как "Особенное". Собственно, попробуйте поизучать, какие еще выборки реализованы в ya.ru, примеряя на свою модель - увидите, где могут возникнуть проблемы.

Задумывайтесь об оптимизации, только когда столкнетесь с неприемлемой производительностью (для этого не нужно ждать реальной нагрузки, можно выявить тестами на фиктивных данных), и только когда найдете узкое место. И я лично стал бы нарушать целостность данных только в случае, когда ни один другой способ (как то кэширование страниц / выборок) не подходит.

Виталий, мои поздравления! :)

Работал с ТС, никаких серьезных проблем не было. Заказывал несколько сайтов, один раз получил на пару дней позже, чем договаривались, но это ИМХО не критично, так что претензий не имею. Качество сателлитов вполне приемлимое.

Кроме того, покупал ссылки с сайта по бмв, все было установлено в срок как надо, потом меня предупредили, что сайт продается, ссылки остались, как и договаривались, контакты нового владельца брать не стал, т.к. ссылки решил не продлевать из-за отваливания клиента :)

Вам нужна своя реализация sape-клиента + транслятор ссылок со своего сервера. Несколько часов работы толкового программиста, только сформулируйте задачу нормальным русским языком :)

Поздравляю! :)

Каширин, Костя, блин, а как же богемское чорное?! Можно будет отдельно в баре заказать, не знаешь?

Gray:
"А Коля будет? А Маня?"

Будет, будет. И Маня будет :)

+1, название конторы и представителя - в студию. По дороге на работу куплю поп-корн :)

Всего: 1529