Автоматическое предложение с 1000 или даже 5000 записей не так сложно. Вы должны извлечь весь список друзей и сохранить его в индексированном массиве javascript (например, мы сделали это, используя первую букву в качестве индекса, поэтому friends ['a'] = [andrey, albert]), а затем вы на самом деле ищете в памяти из небольшого подмножества.
Окно приглашения строится аналогичным образом - вы создаете индекс имен -> элементы dom, вы выполняете манипуляцию dom в автономном режиме - и прикрепляете результаты только к тем людям, которые соответствуют искомому термину.
Список друзей, скорее всего, кэшируется в memcached, а фейсбук разогревает кеш как можно раньше - он не ждет, чтобы каким-либо образом использовать список друзей, чтобы поместить его в memcache. Итак, он извлекается в memcached, хранится в локальном хранилище и использует эффективный JavaScript. Здесь нет БД.
P.S. Я не говорю об Facebook, но для аналогичного решения мы разработали быстрый диалог автоматического предложения / приглашения на более чем 5000 записей.