Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>И тут внезапно встает следующая задача: выбрать все obj_id, для которых верны следующие условия:
Прям-таки внезапно?

О чем думали при проектировании?
ЗХ>Вот. Как это сделать наиболее эффективно?
Предполагая, что имеется индекс по (property_name, property_value, obj_id), наиболее эффективным представляется подход с self-join (3-й вариант
retn). При этом порядок соединения должен определяться селективностью предикатов (как, и возможно ли управлять им в SQLite, не в курсе). То есть упорядочиваем предикаты по убыванию селективности, в данном случае это видимо Last Name, Age, Work. И строго в таком порядке нужно соединять. Проблема в том, что для разных свойств порядок будет разным.