Du har rätt, ett så stort bord är inte användbart. Om du behöver ett verkligt meddelande som håller systemet bättre titta på NoSQL-lösningar (som HBase, Cassandra, MongoDB etc) måste du bara glömma allt du vet om relationsdatabaser.
Med MySQL kan du fortfarande göra något skalbart om du delar upp bordet i mycket små bitar. Få en tabell att behålla meddelanden för max 1k användare (du måste skriva alla meddelanden två gånger om inte båda användarna kommer från samma tabell). Behåll inte mer än 1k tabeller i en DB, skapa automatiskt en annan när denna gräns nås. Att ha flera databaser (även på en fysisk server) gör det enkelt för DBA att överföra var och en till en ny server när den nuvarande blir överbelastad. För att få meddelanden från en viss användare måste din kod hämta den nödvändiga DB/tabellen från en karta som du kommer att ha.