Nie powinieneś tego robić w ten sposób, ponieważ umieszczasz w bazie mnóstwo nadmiarowych danych, potencjalnie niespójnych. Niech no ktoś zrobi literówkę, dodając dokument do bazy - i co wtedy? Dokument znika, bo nie jest widoczny pod żadnym znanym typem. Jest to błąd projektowy, a baza danych nie jest 3NF (http://pl.wikipedia.org/wiki/Posta%C4%87normalna%28bazy_danych%29). W takich sytuacjach robi się słownik - dodatkową tabelę, trzymającą wszystkie możliwe typy dokumentów, oraz klucz obcy pomiędzy identyfikatorem typu w tej tabeli a typem dokumentu w dużej tabeli.
Inna sprawa, że do pewnego momentu taki błąd projektowy nie będzie mieć większego wpływu na wydajność. Dane w indeksach są wyszukiwane binarnie, ilość porównań jest bardzo mała w stosunku do ilości danych. Jednak jeśli baza danych urośnie, to indeks spuchnie, a większy indeks to więcej danych do trzymania w pamięci, więcej danych do modyfikowania w przypadku insertów i update'ów, dłuższe czasy dostępu itp. Przy czym taka sytuacja (czyli nieduży spadek wydajności przy niedużej ilości danych) będzie tylko przy dobrze zaprojektowanych indeksach, czego nie spodziewałbym się po złamaniu 3NF.