FiRеFоX
V.I.P.
- Регистрация
- 07.08.2010
- Сообщения
- 744
Три таблицы:
user: Содержит информацию о всех юзерах (id, логин, пол и т.д)
gallery: Содержит информацию об загруженных юзерами картинок (id, id альбома, название, путь к маленькой картинке, путь к большой картинке, приватность)
gallery_album: Содержит альбы юзеров, в которых находятся изображения
Задача:
Вывести на страницу НЕ приватные фотографии юзеров определенного пола.
За приватность отвечает поле privat в таблице gallery (1 - Видимо всем, 2 - Только друзьям, 3 - Определенным персонажам из другой таблицы)
Делаю запросы:
// Запрос для вывода изображений парней:SELECT .. FROM `gallery`JOIN `user` ON `gallery`.`id_login` = `user`.`id`JOIN `gallery_album` AS `album` ON `gallery`.`id_album` = `album`.`id`WHERE `gallery`.`privat` = 1 AND `user`.`pol` = 1ORDER BY `gallery`.`id` DESC LIMIT 5
Первые два выполняются примерно ~ 7-10 секунд при 300.000 фотографиях (это ещё в основной таблице юзеров всего два пользователя только загрузил).
Как быть в данном случае? Отказаться от вывода изображений по полам?
Может быть поделить на три таблицы по приватности? gallery1 - Видимы всем, gallery2 - Только друзьям, gallery3 - Определенным персонажам. Хотя это врятле поможет, если в таблице user будет столько же пользователей.
user: Содержит информацию о всех юзерах (id, логин, пол и т.д)
gallery: Содержит информацию об загруженных юзерами картинок (id, id альбома, название, путь к маленькой картинке, путь к большой картинке, приватность)
gallery_album: Содержит альбы юзеров, в которых находятся изображения
Задача:
Вывести на страницу НЕ приватные фотографии юзеров определенного пола.
За приватность отвечает поле privat в таблице gallery (1 - Видимо всем, 2 - Только друзьям, 3 - Определенным персонажам из другой таблицы)
Делаю запросы:
// Запрос для вывода изображений парней:SELECT .. FROM `gallery`JOIN `user` ON `gallery`.`id_login` = `user`.`id`JOIN `gallery_album` AS `album` ON `gallery`.`id_album` = `album`.`id`WHERE `gallery`.`privat` = 1 AND `user`.`pol` = 1ORDER BY `gallery`.`id` DESC LIMIT 5
Код:
// Запрос для вывода изображений девушек:SELECT .. FROM `gallery`JOIN `user` ON `gallery`.`id_login` = `user`.`id`JOIN `gallery_album` AS `album` ON `gallery`.`id_album` = `album`.`id`WHERE `gallery`.`privat` = 1 `user`.`pol` = 2ORDER BY `gallery`.`id` DESC LIMIT 5
Код:
// Обычный запрос и вывод всех:SELECT .. FROM `gallery`JOIN `user` ON `gallery`.`id_login` = `user`.`id`JOIN `gallery_album` AS `album` ON `gallery`.`id_album` = `album`.`id`WHERE `gallery`.`privat` = 1ORDER BY `gallery`.`id` DESC LIMIT 5
Как быть в данном случае? Отказаться от вывода изображений по полам?
Может быть поделить на три таблицы по приватности? gallery1 - Видимы всем, gallery2 - Только друзьям, gallery3 - Определенным персонажам. Хотя это врятле поможет, если в таблице user будет столько же пользователей.