|
|
|
12.5 выполняет запросы хуже чем 11.5 ?
|
|||
|---|---|---|---|
|
#18+
А что в сервере версии 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 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2004, 12:56 |
|
||
|
|

start [/forum/topic.php?fid=55&fpage=130&tid=2014723]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 129ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...