【发布时间】:2018-07-28 03:33:10
【问题描述】:
我有 WPF 应用程序,其任务是从 Interbase DB 中拖动数据。请注意,此数据库位于远程网络设备上。此外,还使用了 Firebird ado.net 数据提供程序。
我的一个查询看起来像:
SELECT
T1.ind_st,
T2.ttt,
T2.tdtdtd,
sumr
FROM ((SELECT ind_st,
Sum(r) AS sumR
FROM (SELECT ind_st,
rrr AS r
FROM srok_tel
WHERE date_ch = '23.07.2018 0:00:00'
AND srok_ch = '18'
AND ind_st >= 33049
AND ind_st <= 34717
UNION
SELECT ind_st,
-rrr AS r
FROM srok_tel
WHERE date_ch = '23.07.2018 0:00:00'
AND srok_ch = '12'
AND ind_st >= 33049
AND ind_st <= 34717
UNION
SELECT ind_st,
rrr AS r
FROM srok_tel
WHERE date_ch = '24.07.2018 0:00:00'
AND srok_ch IN ( 6, 12 )
AND ind_st >= 33049
AND ind_st <= 34717)
GROUP BY ind_st) T1
JOIN (SELECT ind_st,
ttt,
tdtdtd
FROM srok_tel
WHERE date_ch = '24.07.2018 0:00:00'
AND srok_ch = '12'
AND ind_st >= 33049
AND ind_st <= 34717) T2
ON T1.ind_st = T2.ind_st)
是的,很重,乍一看很难读,而且可能写错了,但我的任务是用一个查询拖动所有数据,我不是 sql pro。
选择数据的目标表 (SROK_TEL) 包含大约 10^7 行。查询运行时间大约是 90 秒,这比我希望看到的要长得多。
关于如何使这个查询更快地工作有什么建议吗?
UPDATE1:应 luisarcher 的要求,我添加了一个查询计划(希望这正是他所要求的)
PLAN JOIN (SORT ((T1 SROK_TEL NATURAL)
PLAN (T1 SROK_TEL NATURAL)
PLAN (T1 SROK_TEL NATURAL)), T2 SROK_TEL INDEX (PK_SROK_TEL))
【问题讨论】:
-
您使用的是哪个数据库?发布您的解释计划
-
@luisarcher 我将 Interbase DB 与 FireBird 2.5 一起使用。另外,我在问题的更新部分发布了一个查询计划。
标签: sql performance firebase-realtime-database interbase