Delphi xe3 Delphi-SQLServer查询需要很长时间才能运行

Delphi xe3 Delphi-SQLServer查询需要很长时间才能运行,delphi-xe3,Delphi Xe3,德里XE3企业版,SQL Server 2008 当我运行以下查询时,在Delphi程序中运行需要4秒钟。当我从SQLServerManagementStudio运行它时,运行只需要0.5秒 SELECT SUM(ISNULL(soi.ExtendedUnitPrice, 0)) AS TotalExtendedUnitPrice, SUM(ISNULL(soi.ExtendedUnitCost, 0)) AS TotalExtendedUnitCost,

德里XE3企业版,SQL Server 2008

当我运行以下查询时,在Delphi程序中运行需要4秒钟。当我从SQLServerManagementStudio运行它时,运行只需要0.5秒

SELECT
      SUM(ISNULL(soi.ExtendedUnitPrice, 0)) AS TotalExtendedUnitPrice,
      SUM(ISNULL(soi.ExtendedUnitCost, 0))  AS TotalExtendedUnitCost,
      SUM(ISNULL(soi.OriginalTotal, 0))     AS TotalOriginalTotal,
      SUM(ISNULL(soi.LineWeight, 0))        AS TotalLineWeight
FROM SalesOrderItems soi
WHERE (soi.SalesOrderID = :SalesOrderID)

为了解决这个问题,我将soi.saleorderid添加到字段列表中,并添加了一个groupbysalesforderid。现在很快。

这个问题与德尔福无关。Delphi将SQL语句传递给服务器以执行。您应该查看SELECT的执行计划,并查看它告诉您什么影响性能。这是事实,但从Delphi运行它仍然需要4-5秒,但在SQL server上运行时不到0.5秒。一旦我添加了SalesOrderID字段(该字段已编制索引),它在工作站上的运行速度几乎与通过SQLServerManagementStudio在SQLServer上的运行速度一样快。我不知道为什么,但在Delphi中添加索引外键加快了速度。我是SQL Server新手,所以我想我应该从一开始就知道添加索引字段。我假设sql server使用索引来加速操作。