измеряем wall clock time?
вообще, быстрее всего получилось c dbms_lob.substr - насколько я понимаю, он, в отличие от sql-ного substr, умеет в random access, поэтому ему не нужно перечитывать лоб-сегмент на каждой итерации, и поэтому у запросов нет просадки по physical reads при тех же 25мб трафика.
если же сравнивать исходные запросы... ну тут, вероятно, х2 трафика против x100 physical reads у двух других. быстрее будет то, где быстрее сеть. у меня фетч клоба обычно занимает дольше, но бывали флуктуации в обе стороны.
но если откуда берется x100 physical reads мне примерно понятно, то откуда берется х2 трафика при вдвое меньшем roundtrips - у меня пока нет ответа. надо почитать и подумать :)