Как лучше реализовать БД?
ФИО в три отдельные таблицы - имена и отчества часто повторяются. Фамилии просто для единого стиля.
Дату безусловно в отдельную таблицу. 35млн / (365*100). На 100 лет по 1000 человек в день рождалось. На самом деле распределение не равномерное и выигрыш по скорости/памяти будет больше.
Место рождения и место проживания скорее всего не две таблицы, а гораздо больше (есть смысл отдельно хранить города, улицы, дома).
Ну и таблица с ID индивида, содержащая индексы всех его ФИО и прочего. Эту таблицу можно проиндексирвоать по всем столбцам для быстрого поиска.
Простенькая реляционная база данных получается.
на очень крупных проектах почти всё в одной таблице ... 
я могу ошибаться _ SQL не мой конёк