Прежде всего, вам нужно многократно выполнять запрос под каждым уровнем изоляции и усреднять результат, отбрасывая тот, который имеет максимальное время. Это исключит влияние прогрева буфера: вы хотите, чтобы все прогоны находились в «горячем» кэше, а не чтобы один запрос нагревал кэш и платил за это сравнение.
Далее необходимо убедиться, что вы измеряете в реалистичном сценарии параллелизма. Если у вас будут обновления / вставки / удаления, происходящие в реальной жизни, то вы должны добавить их в свой тест, поскольку они будут значительно считывать при различном уровне изоляции. Последнее, что вам нужно, - это сделать вывод, что «сериализуемые чтения являются самыми быстрыми, давайте использовать их повсюду», а затем наблюдаем за тем, как система перестает работать, поскольку все сериализуется.
Кроме этого, единственным уровнем изоляции, который на законных основаниях является более быстрым, является грязное чтение, поскольку он не получает блокировок. Снимок с фиксацией чтения (который вы не измеряли) также не получает блокировок, но влияет на производительность в целом из-за накладных расходов на управление версиями строк.