【发布时间】:2010-05-22 01:38:39
【问题描述】:
当我在 SQL Server Mgt Studio 中执行查询时,我有一个快速运行的查询(不到 1 秒),但是当我在 PHP 中运行完全相同的查询时(在同一个数据库实例上) 使用 FreeTDS v8,mssql_query(),它需要更长的时间(70 多秒)。
我正在点击的表在 Where 子句中使用的日期字段上有一个索引。
会不会是 PHP 的 mssql 函数没有使用索引?
我也尝试过将查询放在存储过程中,然后从 PHP 执行 SP - 出现相同的时差结果。
我还尝试在具有日期索引的表上添加 WITH ( INDEX( .. ) ) 子句,但也没有运气。
这是查询:
SELECT
1 History,
h.CUSTNMBR CustNmbr,
CONVERT(VARCHAR(10), h.ORDRDATE, 120 ) OrdDate,
h.SOPNUMBE OrdNmbr,
h.SUBTOTAL OrdTotal,
h.CSTPONBR PONmbr,
h.SHIPMTHD Shipper,
h.VOIDSTTS VoidStatus,
h.BACHNUMB BatchNmbr,
h.MODIFDT ModifDt
FROM SOP30200 h
WITH (INDEX (AK2SOP30200))
WHERE
h.SOPTYPE = 2 AND
h.DOCDATE >= DATEADD(dd, -61, GETDATE()) AND
h.VOIDSTTS = 0 AND
h.MODIFDT = CONVERT(VARCHAR(10), DATEADD(dd, -1*@daysAgo, GETDATE()) , 120 )
;
【问题讨论】:
-
Ray,您是否发现问题所在以及如何解决?我在 SQLyog 中运行快速的 MySQL 查询和使用 mysql_query 从 PHP 运行缓慢的 MySQL 查询遇到了类似的问题...
-
我遇到了同样的问题。唯一的区别是我使用的是codeigniter。当您对此有解决方案时,请告诉我。谢谢
标签: php sql-server