Показать сообщение отдельно
Старый 04.09.2015, 00:53   #7
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: [MySql] Оператор сравнения IN

Ух, ну и спор начался...

Сообщение от moka Посмотреть сообщение
Не нарушит, т.к. у тебя идет четкий порядок по user_id, который не изменный.
Запрос примерно такого плана:
"SELECT * 
FROM users 
WHERE sn = 'vk' AND DATE_ADD(last_login, INTERVAL 31 day) > NOW() 
ORDER BY id 
LIMIT @offset, 1000" 
Потом вызываю апи соц сети, в одном запросе не более 100 id. т.е. 10 раз. Это 10 https вызовов, время работы апи вконтакта от 6 ms до 100 ms к примеру. Еще количество запросов в секунду к апи соц сети ограничено. Т.е. пока я рассылаю нотификейшены для первых 100к прользователей среди них логинится десять. В результате я 10-и пользователям могу отправить по 2 нотификейшена (так как результаты поиска сдвигаются). В альтернативном варианте я могу выполнять SQL без дат, а даты обрабатывать в коде сервера (сейчас у меня так сделано). В этом случае проблем нет с отправкой, но с обновлением следующая:

В ответах api соц сети получаю id получивших. Это новый список (только часть из тех, кому пытался отправить). Вот их надо обновить, не всех в диапазоне min_id ... max_id. Отсюда IN и вопрос что лучше, 10 запросов по 100 или 1 на 1000. (1000 это в худшем случае, обычно меньше, т.к. многие пользователи отключают нотификейшены).
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием