【发布时间】:2012-08-03 06:52:28
【问题描述】:
我有很多组件使用 PHP 中的旧驱动程序 mssql。 我想切换到 Microsoft 的新驱动程序 SQLSRV,但我的查询速度要慢很多。
我有许多进程处理 +400 000 行。
这是我对 40 000 行的测试:
- testOldDriver_mssql = 行 40000:1 秒
- testNewDriver_nonPDO = 第 40000 行:7 秒
- testNewDriver_PDO = 第 40000 行:4 秒
这是我最大的过程(+480 000 行):
- testOldDriver_mssql = 行 484856:27 秒
- testNewDriver_nonPDO = 行 484856:120 秒
- testNewDriver_PDO = 行 484856:47 秒
- testPDO_ODBC = 行 484856:24 秒
新驱动程序肯定更慢吗?还是我错过了什么?
编辑 1:
“旧驱动程序”是指已弃用的 MSSQL 库(请参阅 php.net/mssql)。
新的驱动是微软直接制造的(见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
【问题讨论】:
-
“旧”和“新”到底是什么意思?我们在谈论什么样的活动?你使用准备好的语句吗?很多未知数...
-
谢谢,我编辑了我的原始信息。
-
这取决于您的测试方法吗?测试数据库可能非常困难,查询缓存一直在进行。另外,您是否阅读过性能差异?检查af-design.com/blog/2009/01/30/… 和“本地”stackoverflow.com/questions/171400/…
-
我的测试方法很简单......一个查询,一个while循环将数据作为数组和一个计数器在我的循环中获取。
-
是的,这是现实生活中的用法。我们有很多导出过程(没有分页:()...这种情况是真实的并且经常发生(一天很多次)。我的 +484 000 导出是使用一个或我们最大客户的数据库进行的测试. 这就是为什么尽快完成这个过程对我来说非常重要。
标签: php sql-server