Nie miało to nic wspólnego z dostawcą ODP.NET. Problem polegał na tym, że biblioteka, której używamy do tworzenia dla nas połączeń (która oczywiście nie jest używana przez Oracle SQL Developer, a której nie używałem, gdy próbowałem dostawcy Microsoft) zawsze wykonywała następujące instrukcje przed zrobieniem czegokolwiek:
ALTER SESSION SET NLS_COMP = LINGUISTIC
ALTER SESSION SET NLS_SORT = BINARY_CI
Dzięki temu Oracle nie uwzględnia wielkości liter. Ale sprawiają, że wszystkie konwencjonalne indeksy stają się bezużyteczne. Ponieważ wysyłaliśmy zapytania z widoku, miał on wbudowaną kolejność. A ponieważ nie jesteśmy właścicielami bazy danych, nie możemy uczynić indeksów lingwistycznych, aby rozwiązać problem z wydajnością.
Zapewnienie sposobu, aby nie wykonywać tych instrukcji w tym (rzadkim) scenariuszu, naprawiło problem.