我使用PHP的旧驱动程序mssql有很多组件。 我想通过微软切换到新的驱动程序SQLSRV,但我的查询速度要慢很多。
我有很多进程处理+400 000行。
以下是 40 000行:
的测试这是我最大的进程( +480 000行):
新驱动程序肯定更慢吗?或者我错过了什么?
修改1:
“旧驱动程序”是指已弃用的MSSQL库(请参阅php.net/mssql)。
新驱动程序是由Microsoft直接制作的驱动程序(请参阅http://www.microsoft.com/en-us/download/details.aspx?id=20098)
我的查询是
SELECT * FROM myTable
WHERE pdvSaisie IN
(SELECT number FROM pdvs WHERE nom LIKE 'ZUEE %')
并使用直接query()
(如果我使用准备好的声明,则没有准备和相同的结果)。
编辑2:
添加了PDO / ODBC测试。惊喜,它更快:o
答案 0 :(得分:2)
解决方法:使用PDO / ODBC。
答案 1 :(得分:1)
要快速提取最多3次,请在sqlsrv_connect连接选项中使用"MultipleActiveResultSets"=>'0'
。
前:
$db = sqlsrv_connect('127.0.0.1', array('Database'=>'dbname','UID'=> 'sa','PWD'=> 'pass',"CharacterSet" =>"UTF-8","ConnectionPooling" => "1"
,"MultipleActiveResultSets"=>'0'
));
答案 2 :(得分:1)
我遇到了与驱动程序SQLSRV类似的问题,我的最终解决方案是将“TraceOn”选项更改为“0”,此配置会阻止驱动程序的跟踪。
有关详细信息,请参阅Connection Options
示例:
$connectionInfo = array( "Database"=>"dbName", "TraceOn" => "0");
$conn = sqlsrv_connect( $serverName, $connectionInfo);