Скорее всего с order by и без него формируются разные планы запроса. Из за этого разное поведение.
А транзакция не спасает из за того что запись и чтение происходит в одной и той же транзакции. Для читающего запроса новые данные не являются грязными, т.к. порождены в той же самой транзакцией. Если целостность данных не сильно важна, то можно попробовать вставку записей делать через дополнительный Connection к БД. Только как бы блокировок не создать самому же себе.
P.S.:
Как должен работать такой запрос