Subject | optimizing query |
---|---|
Author | Edwin Pratomo |
Post date | 2003-07-17T10:01:06Z |
hi,
this query takes several seconds to complete:
SELECT t.app AS app, COUNT(1) AS total, SUM(t.price) AS amount
FROM dlr_localtime dlr JOIN mt_localtime mt ON dlr.id = mt.id
JOIN tariff t ON t.id = mt.tariff
WHERE mt.tariff IS NOT NULL
AND dlr.status = 'delivery success'
AND dlr.mtype = 'MT'
AND mt.ts >= '2003-07-17 00:00:00' AND mt.ts <= '2003-07-17 16:31:59'
AND mt.smsc = 'foo'
GROUP BY mt.tariff, t.app
dlr.status has 5 possible values, dlr.mtype has 2 possible values.
indexes are created for mt.ts, mt.smsc, dlr.id, mt.id, t.id
The query plan is:
PLAN SORT (JOIN (DLR DLR INDEX (DLR_STATUS_IDX),MT MT INDEX
(RDB$PRIMARY29,MT_SMSC_IDX),T INDEX (RDB$PRIMARY24)))
Why is it doing sort? How to make the query run faster?
rgds,
Edwin.
this query takes several seconds to complete:
SELECT t.app AS app, COUNT(1) AS total, SUM(t.price) AS amount
FROM dlr_localtime dlr JOIN mt_localtime mt ON dlr.id = mt.id
JOIN tariff t ON t.id = mt.tariff
WHERE mt.tariff IS NOT NULL
AND dlr.status = 'delivery success'
AND dlr.mtype = 'MT'
AND mt.ts >= '2003-07-17 00:00:00' AND mt.ts <= '2003-07-17 16:31:59'
AND mt.smsc = 'foo'
GROUP BY mt.tariff, t.app
dlr.status has 5 possible values, dlr.mtype has 2 possible values.
indexes are created for mt.ts, mt.smsc, dlr.id, mt.id, t.id
The query plan is:
PLAN SORT (JOIN (DLR DLR INDEX (DLR_STATUS_IDX),MT MT INDEX
(RDB$PRIMARY29,MT_SMSC_IDX),T INDEX (RDB$PRIMARY24)))
Why is it doing sort? How to make the query run faster?
rgds,
Edwin.