DISTINCT будет работать достаточно хорошо, если у всех ваших пользователей разные города. Однако чем больше у вас людей из одного города, тем больше накладных расходов на разделение данных. Оптимизация в лучшем случае - это уникальное сканирование столбца индекса для города.
Размещение столбца city в таблице people также может замедлить определенные запросы доступа к таблице people.
Сложность может сделать поддержание качества данных таблицы ваших городов. Предполагая, что доступны соответствующие метаданные, достаточно просто проверить новые города, которые были добавлены. Это позволяет устранить такие проблемы, как наличие городов «Нью-Йорк», «Нью-Йорк», «Нью-Йорк» и «Нью-Йорк»
Вопрос о том, какой подход будет быстрее, действительно зависит от приложения. Если город всегда требуется при доступе к записи человека, запись города в личную запись может быть быстрее. Если вам часто нужен список городов, лучше иметь их в отдельной таблице.
Наличие дополнительных таблиц может сделать ваши запросы немного сложнее. Тем не менее, вы, вероятно, получите значительное качество данных. Гибкость, которую вы получите, поместив столбец города в таблицу сотрудников, скорее всего, будет зависеть от качества данных.
Ваш дизайнер баз данных, похоже, проделал хорошую работу.