Index for a Postgres query with a sort and an equality
Simplified query to make it readable:

SELECT *
FROM   "Follows" f
JOIN   "Users"   u ON f."followeeId" = u."id"
WHERE  f."followerId" = 169368
ORDER  BY f."createdAt" DESC
LIMIT  1000;


Your index follows_followinglist_followerid_createdat_idx looks good for the job. In Postgres 9.2+ it might get a bit faster if you append "followeeId" to the index - if and only if you can get an index-only scan out of this. Maybe not possible in your case.

CREATE INDEX follows_foo_idx ON "Follows"("followerId", "createdAt" DESC, "followeeId");


Generally, this query won't get lighning fast, since you have to fetch up to 1000 random rows from "Users". The key to performance will be:


Optimized table layout of "Users" to keep the table as small as possible, so fewer blocks have to be read and more of it can stay in cache.
Plenty of RAM and cache settings accordingly if your table "Users" is big.


It would also help to cluster the "Follows" table from time to time. Details:


Configuring PostgreSQL for read performance