【发布时间】: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