>    Сдаёццо мне, что On Q.TMC_ID+0 = T.ID радикально изменит ситуацию...

Мдя-я-я... Век живи - век учись, дураком помрешь :)

SELECT MAX(T.NAME) AS NMTMC,
 SUM( IIF(Q.PLACE_ID = '1', Q.QUANTITY, 0)) AS QNT000001,
 SUM( IIF(Q.PLACE_ID = '2', Q.QUANTITY, 0)) AS QNT000002,
 SUM(Q.QUANTITY) AS QNTNONAL
FROM TABL$TMC_QUANT Q INNER JOIN TABL$TMC T ON Q.TMC_ID+0 = T.ID
GROUP BY Q.TMC_ID

План
PLAN JOIN (Q ORDER INDX$TMC_QUANT_TMC_ID, T INDEX (INDX$TMC_ID))

Адаптированный план
PLAN JOIN (Q ORDER INDX$TMC_QUANT_TMC_ID, T INDEX (INDX$TMC_ID))

------ Performance info ------
Prepare time = 16ms
Execute time = 62ms
Avg fetch time = 2.95 ms
Current memory = 1 222 620
Max memory = 1 387 740
Memory buffers = 75
Reads from disk to cache = 157
Writes from cache to disk = 1
Fetches from cache = 73 258

Видать из-за того, что Q.TMC_ID+0 вычисляет и сравнивает с полученным
значением, а не со значением из таблицы.

Ответить