0
我正在連接到Oracle數據庫11g企業版版本11.2.0.3.0 - 64位。爲什麼使用pdo_oci比使用oci8查詢執行速度更快?
連接php 5.6.3(xampp安裝)。
簡單的查詢執行與pdo_oci是即時的。
oci8需要5秒。
對於PDO_OCI,我使用延長php_pdo_oci.dll
對於OCI8,我使用延長php_oci8_12c.dll
我已經安裝了Oracle 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這麼慢?
感謝,
帕特里克
也許其中一個測試命中查詢緩存,而另一個則在數據庫「冷」時運行。 – GolezTrol 2014-12-03 21:25:16
不,它總是比pdo_oci更快。 – trogne 2014-12-03 21:27:40