Наблюдаю ту же проблему.
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
Версия СМ 1.027.2
cost_adj = 100
Уже сложно сказать, когда это произошло. То ли после перехода на 10g, то ли после перехода на 1.027.2, т.к. практически одновременно обновляли версию СМ и СУБД.
Запрос уже немного другой (просто отвязали SMCard)
Код:
select nvl(sum( S.Quantity * decode (D.LocationTo, 13, 1,
decode (D.LocationFrom, 13 , -1, 0) ) ), 0)
from Supermag.SmDocuments D, Supermag.SmSpec S
where D.DocType = S.DocType and
D.ID = S.DocID and
S.Article = '000079' and
D.DocState >= 2 and
D.CreatedAt<TO_DATE('20090201','YYYYMMDD') and
( D.LocationTo = 13 or D.LocationFrom = 13 )
План не радует:
Код:
--------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 59 | 2326 (1)| 00:00:28 |
| 1 | SORT AGGREGATE | | 1 | 59 | | |
|* 2 | TABLE ACCESS BY INDEX ROWID | SMDOCUMENTS | 1 | 30 | 2 (0)| 00:00:01 |
| 3 | NESTED LOOPS | | 156 | 9204 | 2326 (1)| 00:00:28 |
| 4 | TABLE ACCESS BY INDEX ROWID| SMSPEC | 1168 | 33872 | 1156 (0)| 00:00:14 |
|* 5 | INDEX RANGE SCAN | SMSPEC_ART | 1168 | | 9 (0)| 00:00:01 |
|* 6 | INDEX RANGE SCAN | SMCDOCUMENTS_PK | 1 | | 1 (0)| 00:00:01 |
--------------------------------------------------------------------------------------------------
Почему вылезает index range scan по smspec_art?
reddevil, ты победил эту проблему? Судя по тому, что у нас версия 1.027, этот косячок не был исправлен в том обновлении, которого ты ждал.