我正在为此寻找解决方案。找不到任何有用的东西......
我正在开发一个(蛋糕)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秒......
感谢您的帮助...
答案 0 :(得分:0)
假设与MSSQL服务器的连接没有物理问题(低延迟,网络问题等)并且PDO驱动程序没有任何问题,应该没有这么大的差异。
正如@Sammitch所说,你应该索引item.id字段。还可以尝试WITH(NOLOCK)提示。 像这样:
SELECT
*
FROM
items i WITH (NOLOCK)
WHERE
i.id < 10000