Какой лучший способ отфильтровать записи в базе данных от друзей из Facebook? - PullRequest
0 голосов
/ 26 мая 2011

Мы хотели бы представить функцию, которая позволяет пользователям просматривать результаты игр от своих друзей на Facebook.В настоящее время мы храним Facebook uid каждого пользователя, когда они впервые регистрируются в нашей игре (социальная регистрация).Наша база данных MySQL выглядит примерно так:

Пользователь

  • user_id
  • facebook_uid

Результат

  • user_id
  • оценка
  • resultdate

Вызывая API Graph Facebook, мы можем создать список друзей с разделителями-запятыми.Таким образом, один из способов отфильтровать результаты игры по друзьям из Facebook - это:

  1. выполнить предложение sql IN в поле User.facebook_uid, используя список друзей, затем
  2. присоединиться к User.user_id, чтобыResult.user_id

Мы проверим это, но я обеспокоен влиянием на производительность использования предложения IN (списки друзей могут быть 300+).

Есть ли у кого-нибудь опыт?используя другой подход?

Наслаждались бы любыми идеями.Спасибо.

1 Ответ

1 голос
/ 26 мая 2011

Я никогда не использую user_id в моей базе данных. Хотя это, скорее всего, int (5) - то есть быстрее, наличие двух идентификаторов просто сбивает с толку, и вы можете столкнуться с такими проблемами.

В моем опыте разработки приложений для Facebook (около полутора лет) у меня никогда не было проблем с использованием оператора IN, запросы всегда были быстрыми. Если у вас хорошая архитектура базы данных и хороший PHP-код, у вас все будет хорошо. Это просто список лидеров или что-то подобное.

Вы также можете загрузить эту информацию с помощью вызова AJAX, чтобы пользователи никогда не испытывали задержек из-за длинных запросов SQL.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...