【问题标题】:Delphi - SQL Server query takes a long time to runDelphi - SQL Server 查询需要很长时间才能运行
【发布时间】:2025-12-24 10:00:15
【问题描述】:

德里 XE3 企业版,SQL Server 2008

当我运行以下查询时,在 Delphi 程序中运行需要 4 秒。当我从 SQL Server 管理工作室运行它时,它只需要 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)

【问题讨论】:

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

标签: delphi-xe3


【解决方案1】:

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

【讨论】:

    最近更新 更多