Dmitry Yemanov wrote:
А ты ведь абсолютно прав, видать к вечеру у мну соображалка отказала.
Сочетание ORDER и INDEX - есть зло :-)
Чё-та робот-перлюстратор на линии сегодня совсем дурит. Предыдущий
пост уже с час где-то слоняется. Не согласная я, что всегда зло. Моя
полуторка, правда, не умеет показывать индекс-план в случае ордер-плана,
но умеет таки его тихонечко применять (ты меня сам этому учил).
Результаты при отключении то одного, то другого индекса в усечении и
потом обоих вместе и потом сортировки по индексу - вота (все запросы
выполнялись через дисконнект-коннект):
SHOW INDEX sebg_arc
SEBGA_DATE DESCENDING INDEX ON SEBG_ARC(DATEREG)
SEBGA_SPR UNIQUE INDEX ON SEBG_ARC(CODE, ARCCODE)
Я так думаю, что задействованы оба на усечение и один потом ещё раз на
сортировку:
________________________________________________________
select first 1 arccode from sebg_arc where code=90 and datereg<'01.01.2006'
order by datereg desc
PLAN (SEBG_ARC ORDER SEBGA_DATE)
ARCCODE
===========
1194856
Current memory = 1698720
Delta memory = 589924
Max memory = 1745720
Elapsed time= 0.03 sec
Buffers = 75
Reads = 70
Writes 0
Fetches = 397
Отключаем композит
________________________________________________________
select first 1 arccode from sebg_arc where code+0=90 and
datereg<'01.01.2006'
order by datereg desc
PLAN (SEBG_ARC ORDER SEBGA_DATE)
ARCCODE
===========
1194856
Current memory = 1298632
Delta memory = 189836
Max memory = 1494704
Elapsed time= 0.03 sec
Buffers = 75
Reads = 76
Writes 0
Fetches = 3122
Отключаем датный
________________________________________________________
select first 1 arccode from sebg_arc where code=90 and
datereg+0<'01.01.2006'
order by datereg desc
PLAN (SEBG_ARC ORDER SEBGA_DATE)
ARCCODE
===========
1194856
Current memory = 1770464
Delta memory = 661668
Max memory = 1770464
Elapsed time= 0.13 sec
Buffers = 75
Reads = 739
Writes 0
Fetches = 2834
Оставляем только сортировку
________________________________________________________
select first 1 arccode from sebg_arc where code+0=90 and
datereg+0<'01.01.2006'
order by datereg desc
PLAN (SEBG_ARC ORDER SEBGA_DATE)
ARCCODE
===========
1194856
Current memory = 1611192
Delta memory = 502396
Max memory = 1611192
Elapsed time= 1.88 sec
Buffers = 75
Reads = 4419
Writes 0
Fetches = 823743
Оставляем только усечение
________________________________________________________
select first 1 arccode from sebg_arc where code=90 and datereg<'01.01.2006'
order by datereg+0 desc
PLAN SORT ((SEBG_ARC INDEX (SEBGA_SPR,SEBGA_DATE)))
ARCCODE
===========
1194856
Current memory = 2982656
Delta memory = 1873860
Max memory = 3114000
Elapsed time= 1.99 sec
Buffers = 75
Reads = 3303
Writes 0
Fetches = 9698
________________________________________________________
--
Regards. Ded.