<?php
$db = new PDO('pgsql:dbname=db3;host=sandbox3', 'pguser_ro', 'mnDjsi3oqwpEfs9');
echo "test exec: ";
$s = microtime(true);
$stmt = $db->prepare("SELECT * FROM period_38.project_1 WHERE ns_left>=127382 AND ns_right<=430109 AND rank_1=8 ORDER BY depth ASC OFFSET 40 LIMIT 20");
$result = $stmt->execute();
$e = microtime(true);
echo (($e - $s) * 1000.0), PHP_EOL;
echo "test prepared: ";
$s = microtime(true);
$stmt = $db->prepare("SELECT * FROM period_38.project_1 WHERE ns_left>=:nsLeft AND ns_right<=:nsRight AND rank_1=:rank ORDER BY depth ASC OFFSET :offset LIMIT :limit");
$stmt->bindValue(':nsLeft', 127382, PDO::PARAM_INT);
$stmt->bindValue(':nsRight', 430109, PDO::PARAM_INT);
$stmt->bindValue(':rank', 8, PDO::PARAM_INT);
$stmt->bindValue(':offset', 40, PDO::PARAM_INT);
$stmt->bindValue(':limit', 20, PDO::PARAM_INT);
$result = $stmt->execute();
$e = microtime(true);
echo (($e - $s) * 1000.0), PHP_EOL;
И получаем весьма странный результат:test exec: 6.2339305877686
test prepared: 1377.2549629211
Перемена мест слагаемых на сумму не влияет никак, разница в скорости на два порядка сохраняется…
Кто-нить сталкивался с таким странным поведением PDO драйвера?