- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Так как предыдущая тема устарела и возможности разместить ответ в ней нет, создам новую.
Структура была построена, согласно предложенной схеме от Милованов Ю.С.
Т.е. есть 3 таблицы - пользователи (усл. `users`), группы (усл. `groups`) и таблица для связей ID первых двух (усл. `map`).
Сейчас база набилась данными, пока 35 000 строк. Появились проблемы. А именно, требуется оптимизация выборки пользователей по группе.
Прошу Вас помочь. Единственный вариант, который я вижу при такой реализации. Например, есть группа "Москва" с `id` = 2. Получается, первоначально я выбираю все `id` пользователей из общей таблицы со связями (`map`), у которых совпадает id группы.
Запрос: "SELECT `user_id` FROM `map` WHERE `group_id` = 2"
На выходе я получаю большой список id пользователей, по которому, в дальнейшем я могу выбрать всех участников группы.
Запрос: "SELECT * FROM `users` WHERE `id` = 1 OR `id` = 2 ... (еще куча id из первого запроса) ... OR `id` = 15000"
Запрос просто огромный и ужасный. Может ответ прост, но пока не могу придумать оптимизацию выборки.
Так как предыдущая тема устарела и возможности разместить ответ в ней нет, создам новую.
Структура была построена, согласно предложенной схеме от Милованов Ю.С.
Т.е. есть 3 таблицы - пользователи (усл. `users`), группы (усл. `groups`) и таблица для связей ID первых двух (усл. `map`).
Сейчас база набилась данными, пока 35 000 строк. Появились проблемы. А именно, требуется оптимизация выборки пользователей по группе.
Прошу Вас помочь. Единственный вариант, который я вижу при такой реализации. Например, есть группа "Москва" с `id` = 2. Получается, первоначально я выбираю все `id` пользователей из общей таблицы со связями (`map`), у которых совпадает id группы.
Запрос: "SELECT `user_id` FROM `map` WHERE `group_id` = 2"
На выходе я получаю большой список id пользователей, по которому, в дальнейшем я могу выбрать всех участников группы.
Запрос: "SELECT * FROM `users` WHERE `id` = 1 OR `id` = 2 ... (еще куча id из первого запроса) ... OR `id` = 15000"
Запрос просто огромный и ужасный. Может ответ прост, но пока не могу придумать оптимизацию выборки.
Есть такие вещи как join который поможет сделать с 2 запросов один.
А еще, на будущее, что бы не делать тучи OR юзаем IN
bay_ebook, благодарю! Все гениальное просто) Я почему-то не подумал про JOIN в принципе.
Да, и про индексы не забывайте.
Джойн-то джойном, но мне не понравилась сама реляционная база.
dm8, я уже переписал выборку. Но всегда готов рассмотреть более лучшие варианты. Вы можете что-то предложить, чего не было в прошлой теме?