Код: Выделить всё
SELECT MAILS.ID as IDM, MAILS.ORDERS, CLIENTS.NAME as CLIENT,Clients.id as IDC, MAILS.NUMMAIL,MAILS.RING as PROSVON, MAILS.FIRM, MAILS.MAN, STREETS.NAME as STREET, MAILS.HOME, MAILS.LETTEROUT,
MAILS.AREANUM, MAILS.backcl , MAILS.AREALET, MAILS.ADDADR, MAILS.PHONE, SERVICES.NAME as SERVICE1, MAILS.SLIPTIME, MAILS.SLIPMAN, MAILS.SLIPDOLG, MAILS.SLIPPHONE, EXECSOSTS.NAME AS EXECSOT1, MAILS.NUMRECIP, MAILS.EXECSOST, REASONS.NAME as REASON
, MAILS.courier1 as courier, MAILS.SLIPDATE
FROM MAILS
LEFT JOIN STREETS ON (MAILS.STREETOUT = STREETS.ID)
INNER JOIN EXECSOSTS ON (MAILS.EXECSOST = EXECSOSTS.ID)
LEFT JOIN TARIFFS ON (MAILS.TARIFF = TARIFFS.ID)
LEFT JOIN ORDERS ON (MAILS.ORDERS = ORDERS.ID)
INNER JOIN SERVICES ON (TARIFFS.SERVICE = SERVICES.ID)
INNER JOIN REASONS ON (MAILS.BACKCL = REASONS.ID)
INNER JOIN CLIENTS ON (ORDERS.CLIENT = CLIENTS.ID)
where (UPPER(MAILS.FIRM) Like '%ГОЛДЕН%')
ORDER BY ORDERS desc, NUMMAIL
PLAN SORT (MERGE (SORT (CLIENTS NATURAL),SORT (MERGE (SORT (REASONS NATURAL),SORT (MERGE (SORT (SERVICES NATURAL),SORT (JOIN (JOIN (MERGE (SORT (EXECSOSTS NATURAL),SORT (JOIN (MAILS NATURAL,STREETS INDEX (RDB$PRIMARY1)))),TARIFFS INDEX (RDB$PRIMARY49)),ORDERS INDEX (RDB$PRIMARY10)))))))))
Adapted Plan
PLAN SORT (MERGE (SORT (CLIENTS NATURAL),SORT (MERGE (SORT (REASONS NATURAL),SORT (MERGE (SORT (SERVICES NATURAL),SORT (JOIN (JOIN (MERGE (SORT (EXECSOSTS NATURAL),SORT (JOIN (MAILS NATURAL,STREETS INDEX (INTEG_2)))),TARIFFS INDEX (INTEG_69)),ORDERS INDEX (INTEG_20)))))))))
------ Performance info ------
Prepare time = 16ms
Execute time = 14s 594ms
Avg fetch time = 810,78 ms
Current memory = -24 460 176
Max memory = 45 982 112
Memory buffers = 3 000
Reads from disk to cache = 64 299
Writes from cache to disk = 0
Fetches from cache = 1 856 665