На самом деле, дело обстоит еще хуже. Если иерархия объектов продолжает расти, включая, например, классы Professor, Staff, Undergrad (наследует от класса Student) и всю иерархию AdjunctEmployees (наследуемую от Staff), и программа хочет найти всех людей по фамилии Smith, то соединения должны быть выполнены для всех порожденных классов системы, поскольку семантика «найти всех людей» означает, что запрос должен произвести поиск данных в таблице PERSON, а затем выполнить набор дорогостоящих операций соединения для импорта из базы данных оставшихся данных. В этих операциях должны участвовать таблицы PROFESSOR, UNDERGRAD, ADJUCTEMPLOYEE, STAFF и все другие таблицы, соответствующие классам, которые порождены от PERSON. Если учесть, что запросы с соединениями относятся к числу наиболее дорогостоящих запросов, поддерживаемых РСУБД, то становится очевидной невозможность быстрого выполнения требуемых действий.
В результате разработчики обычно применяют один из двух других подходов, являющихся на вид более сложными, но и более эффективными при работе с реляционным хранилищем.