【发布时间】:2009-09-17 03:36:13
【问题描述】:
我的一位前同事写了以下 UPDATE 作为数据导入脚本的一部分,在 92k 行的表上完成需要将近 15 分钟。
UPDATE table
SET name = (
SELECT TOP 1 old_name FROM (
SELECT
SUM(r) rev,
number,
name,
intermediate_number,
intermediate_name,
old_number,
old_name
FROM table
GROUP BY
number,
name,
intermediate_number,
intermediate_name,
old_number,
old_name
) t
WHERE t.name = table.name
ORDER BY rev DESC
);
我确信它可以被重写以提高效率,但我所有的尝试都失败了,或者没有产生相同的结果。
此外,表上没有定义索引。建议表示赞赏。如果这很重要,我在 Sybase iAnywhere 11 上。
【问题讨论】:
-
intermediate_number 可以使用一些微调器。
标签: sql optimization sybase query-optimization