Pardon my ignorance here, never worked on this kinda program before, but isn't is actually hard on complex databases like Facebook to actually remove data, better just to mark it as unviewable?
Deleting a record from a table can cause a re-index, which is very intensive. It's much easier to flag a column in a record as "deleted" or whatever, and then run a cleanup during off-peak hours.
I'm sure there are clever ways around that with proper knowledgeable DBAs on your team, but as I'm a web dev for smaller audience projects, I don't touch solutions that require those types of optimizations that I'm sure Facebook has implemented.
As will adding new data and FB loves the story of adding to their profiling DB.
This is not an indexing issue but a "we love adding data but hate removing it" issue.
Disclaimer: Have no experience with databases at that scale so maybe this isn't entirely unreasonable.