MSSQL和PDO非常慢

时间:2014-03-10 23:09:28

标签: php sql-server pdo cakephp-2.3

我正在为此寻找解决方案。找不到任何有用的东西......

我正在开发一个(蛋糕)php应用程序。 在我的本地机器上,我有一个mysql数据库。当我连接到这个数据库时,我的查询很快。

当我在服务器上执行相同的代码时,这是一个带有MSSQL的Microsoft Server 2008,我的查询非常慢。

这里有一个小测试,它最好地指出问题:

$attrs = array(PDO::ATTR_PERSISTENT => true);

$dsn = 'sqlsrv:server=127.0.0.1;Database=xxx_art_collection';
$user = 'xxx';
$password = 'xxx';

$start_time=microtime(true);
try {
    $dbh = new PDO($dsn, $user, $password, $attrs);

    $statement = $dbh->prepare("select * from items where id<10000");
    $statement->execute();

    //$rows = $statement->fetchAll(PDO::FETCH_ASSOC);
    //print_r($rows);

    while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
        print_r($row['id']);
    }

} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
$stop_time=microtime(true);
print_r('<br />'.number_format($stop_time-$start_time,4));

我有大约1000个条目,我的测量时间大约是50秒.... 在mysql上大约0.1秒......

感谢您的帮助...

1 个答案:

答案 0 :(得分:0)

假设与MSSQL服务器的连接没有物理问题(低延迟,网络问题等)并且PDO驱动程序没有任何问题,应该没有这么大的差异。

正如@Sammitch所说,你应该索引item.id字段。还可以尝试WITH(NOLOCK)提示。 像这样:

SELECT
  *
FROM 
  items i WITH (NOLOCK)
WHERE
  i.id < 10000