почему выполнение запросов быстрее с pdo_oci, чем с oci8?

Я подключаюсь к своей Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 — 64-битной версии.

Подключение с помощью php 5.6.3 (установка xampp).

Простое выполнение запроса является мгновенным с pdo_oci.

Это занимает 5 секунд с oci8.

Для pdo_oci я использую расширение php_pdo_oci.dll

Для oci8 я использую расширение php_oci8_12c.dll

Я установил оракул InstantClient_12_1.

Вот код для pdo_oci:

$hote = '123.456.789.3';
$port = '1521';
$service = 'blabla.blabla-db.blabla';
$user = '12345';
$pass = '12345';

$lien_base =
"oci:dbname=(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(Host = ".$hote .")
(Port = ".$port."))
)
(CONNECT_DATA =
(SERVICE_NAME = ".$service.")
)
)";

try
{
$connexion = new PDO($lien_base, $user, $pass);
}
catch (PDOException $erreur)
{
echo $erreur->getMessage();
}

$num_notice = "030000002";
$notice = $connexion->query("SELECT * FROM UDQ01.Z13U WHERE Z13U_REC_KEY = ".$connexion->quote($num_notice)."")->fetch();

echo '<pre>' . print_r($notice,1) . '</pre>';

И код для oci8:

$conn = oci_connect('12345', '12345', '123.456.211.3:1521/blabla.blabla-db.blabla.ca');
$query = 'SELECT * FROM UDQ01.Z13U WHERE Z13U_REC_KEY = 030000002';
$stid = oci_parse($conn, $query);
oci_execute($stid, OCI_NO_AUTO_COMMIT);

$row = oci_fetch_array($stid, OCI_ASSOC);

echo '<pre>' . print_r($row,1) . '</pre>';

oci_free_statement($stid);
oci_close($conn);

Почему так медленно с oci8?

Спасибо,

Патрик

0

Решение

Проблема была в запросе:

Между значением должно быть как:

$query = "SELECT * FROM UDQ01.Z13U WHERE Z13U_REC_KEY = '030000002'";

‘Был неявным с запросом pdo_oci:

"SELECT * FROM UDQ01.Z13U WHERE Z13U_REC_KEY = ".$connexion->quote($num_notice).""

Так что pdo_oci и oci8 одинаково быстры.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]