Sofern Sie nicht erwarten, dass dies zu Millionen und Abermillionen von Datensätzen und/oder sehr anlagenintensiv wird, gibt es keinen Grund, diese unter keinen Umständen in mehr als eine Tabelle aufzuteilen. Der Zweck der Indexierung in einer Datenbank besteht darin, das Problem mit großen Datasets zu umgehen.
In Ihrem Fall, nehmen Sie an, Sie haben 90K Einträge mit 30K von jedem der drei Typen. Wenn Sie die Spalte document_type indizieren, wäre eine Abfrage, die einen der drei Typen auswählt, fast so schnell wie das Auswählen einer Tabelle, die nur 30K-Einträge des gleichen Typs enthält.
Da Dokument-ID höchstwahrscheinlich ein numerischer Index mit einer hohen Kardinalität ist, vorausgesetzt, Sie indizieren die Spalte - was Sie sollten, sollte es der Primärschlüssel sein - die Auswahl eines Datensatzes eines bestimmten Index ist nur so schnell auf einer Tabelle mit 90K Einträgen von drei Typen wie auf einer Tabelle von 30K Einträgen eines Typs.
Es gibt andere Gründe für die Shard-Daten, aber sie haben mit der Ausführung komplexer Abfragen, transaktionaler Inserts, Tabellen-Joins usw. zu tun.Meiner Erfahrung nach haben Tischdesigner oft das Bedürfnis, Dinge zu zerstückeln, die nicht geteilt werden sollten, was (wie andere Antworten erwähnt haben) zu unnötigen Komplexitäten führt. Die wichtigste Regel der Entwicklung: Mach es einfach!