Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / 12.5 выполняет запросы хуже чем 11.5 ? / 1 сообщений из 1, страница 1 из 1
09.01.2004, 12:56
    #32371410
Eugene Kostin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.5 выполняет запросы хуже чем 11.5 ?
А что в сервере версии 12.5 относительно 11.5 ухудшили правила выполнения запросов ?

Уточнение:

1) Есть такая таблица:

CREATE TABLE dbo.SCPFU (
BSC_NANC char (4) not null
, BSC_KEY char (1) not null
, BSC_AN char (6) not null
, BSC_AS char (3) not null
, ID_SC int not null
, CPNC char (6) not null
, iBANK smallint not null
, ECA_BRNM char (4) not null
, EC8_CCY char (3) not null
, EC7_CNA char (2) not null
, BSC_SHF varchar (40) null
, ESC_OAD datetime null
, BSC_BOAD datetime null
, ESC_CAD datetime null
, BSC_MN_BIS char (1) null
, BSC_VVO char (1) null
, BSC_VOP char (3) null
, BSC_OP char (3) null
, TIMESTAMP timestamp null
, ESC_SHN char (15) not null
, ESC_ACO char (3) null
, EC6_ACD char (2) null
, EC5_ATP char (2) null
, EC4_CTP char (2) null
, BSC_OI char (2) null
, BSC_COD_ERR char (4) null
, BSC_BNK char (4) null
, BSC_R013 char (1) null
, BSC_PR_S char (1) null
, BFL_FLMN char (2) null
, ESC_AI36 char (1) null
, BSC_ACC varchar (34) not null
, BSC_SP char (3) null
, BSC_SK char (3) null
) on 'default'
end
go
alter table dbo.SCPFU
add constraint PK_SCPF primary key
nonclustered (BSC_NANC, BSC_KEY, BSC_AN, BSC_AS, iBANK) on "default"
go
alter table dbo.SCPFU
add constraint uk_scpf unique nonclustered (ID_SC) on "default"
go
create nonclustered index scpf$timestamp on dbo.SCPFU(TIMESTAMP)
on "default"
go
create nonclustered index SCPFU$ACC_IBANK_IDSC
on dbo.SCPFU(BSC_ACC, iBANK, ID_SC)
on "default"
go

2) Есть запрос:

select * from scpfu (index PK_SCPF) where BSC_NANC='2600' or BSC_NANC='2601'

3) Смотрим план его выполнения на Sybase ASE 11.5.9 (обращаем внимание на
строку Positioning by key) :


QUERY PLAN FOR STATEMENT 1 (at line 1).

STEP 1
The type of query is SELECT.


FROM TABLE
scpfu
Nested iteration.
Using 2 Matching Index Scans
Index : PK_SCPF
Ascending scan.
Positioning by key.
Keys are:
BSC_NANC
Index : PK_SCPF
Ascending scan.
Positioning by key.
Keys are:
BSC_NANC
Using I/O Size 2 Kbytes.
With LRU Buffer Replacement Strategy.


Parse and Compile Time 0.
SQL Server cpu time: 0 ms.

Execution Time 0.
SQL Server cpu time: 0 ms. SQL Server elapsed time: 0 ms.

4) Смотрим план его выполнения на Sybase ASE 12.5 (обращаем внимание на
строку Forward scan) :


QUERY PLAN FOR STATEMENT 1 (at line 1).

STEP 1
The type of query is SELECT.


FROM TABLE
scpfu
Nested iteration.
Index : PK_SCPF
Forward scan.
Positioning at index start.
Using I/O Size 4 Kbytes for index leaf pages.
With LRU Buffer Replacement Strategy for index leaf pages.
Using I/O Size 4 Kbytes for data pages.
With LRU Buffer Replacement Strategy for data pages.


Parse and Compile Time 1.
SQL Server cpu time: 100 ms.

Execution Time 0.
SQL Server cpu time: 0 ms. SQL Server elapsed time: 0 ms.

5) Модифицируем запрос c

select * from scpfu (index PK_SCPF) where BSC_NANC='2600' or BSC_NANC='2601'

на

select * from scpfu (index PK_SCPF) where BSC_NANC in ('2600','2601')


6) Планы получаем аналогичные - на 12.5 - Forward Scan, а на 11.5 - Pos by key.

7) Модифицируем запрос с

select * from scpfu (index PK_SCPF) where BSC_NANC='2600' or BSC_NANC='2601'
или select * from scpfu (index PK_SCPF) where BSC_NANC in ('2600','2601')

на
select * from scpfu (index PK_SCPF) where BSC_NANC='2600'
union all
select * from scpfu (index PK_SCPF) where BSC_NANC='2601'

и смотрим планы

8) план его на 11.5 - Positioning by key.
9) план его на 12.5 - Positioning by key.

Получается что 12.5 испортили и нельзя писать в блоках Where ключевые поля
через IN и OR ? Кто объяснит что это за фигня ? А если у меня
select не из одной, а из нескольких таблиц и вместо * длинный перечень полей,
вы представляете какой код будет с union allами ? Как его менять круто будет...
Ужас...

А какие еще аналогичные пакости в 12.5 ?
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / 12.5 выполняет запросы хуже чем 11.5 ? / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]