Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Странности в оптимизаторе 3.x / 24 сообщений из 24, страница 1 из 1
22.12.2013, 17:49
    #38509308
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
Развернул одну и ту же базу из бекапа на 2.5.3.26729 и на 3.0.0.30803

Код: sql
1.
2.
3.
4.
5.
6.
SELECT COUNT(*)
FROM TRIAL_LINE
JOIN TRIAL ON TRIAL_LINE.CODE_TRIAL = TRIAL.CODE_TRIAL
JOIN PRIZE ON TRIAL.CODE_PRIZE = PRIZE.CODE_PRIZE
WHERE
      TRIAL.BYDATE BETWEEN '01.01.2000' AND '01.01.2010'



План и статистика выполнения на 2.5

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
План
PLAN JOIN (TRIAL INDEX (IDX_TRIAL_BYDATE), PRIZE INDEX (PK_PRIZE_1), TRIAL_LINE INDEX (FK_TRIAL_LINE_REF_TRIAL))

------ Performance info ------
Prepare time = 0ms
Execute time = 359ms
Avg fetch time = 359,00 ms
Current memory = 6 471 988
Max memory = 11 767 532
Memory buffers = 256
Reads from disk to cache = 1 695
Writes from cache to disk = 0
Fetches from cache = 325 333

COUNT
______
64055

План и статистика выполнения на 3.0

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
План
PLAN JOIN (TRIAL INDEX (IDX_TRIAL_BYDATE), TRIAL_LINE INDEX (FK_TRIAL_LINE_REF_TRIAL), PRIZE INDEX (PK_PRIZE_1))

------ Performance info ------
Prepare time = 0ms
Execute time = 531ms
Avg fetch time = 531,00 ms
Current memory = 142 219 672
Max memory = 144 139 792
Memory buffers = 8 192
Reads from disk to cache = 0
Writes from cache to disk = 0
Fetches from cache = 493 911

COUNT
______
64055



Статистика по таблицам для 2.5Database "D:\interbasedata\horses.fdb"
Database header page information:
Flags 0
Checksum 12345
Generation 887
Page size 16384
ODS version 11.2
Oldest transaction 866
Oldest active 867
Oldest snapshot 867
Next transaction 876
Bumped transaction 1
Sequence number 0
Next attachment ID 5
Implementation ID 16
Shadow count 0
Page buffers 0
Next header page 0
Database dialect 1
Creation date Dec 19, 2013 16:47:52
Attributes force write

Variable header data:
Sweep interval: 20000
*END*


Database file sequence:
File D:\interbasedata\horses.fdb is the only file

Analyzing database pages ...
TRIAL (185)
Primary pointer page: 430, Index root page: 431
Average record length: 58.16, total records: 107803
Average version length: 0.00, total versions: 0, max versions: 0
Data pages: 647, data page slots: 647, average fill: 77%
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 0
60 - 79% = 646
80 - 99% = 1

Index FK_TRIAL_CURATOR (10)
Depth: 2, leaf buckets: 28, nodes: 107803
Average data length: 0.00, total dup: 107802, max dup: 107802
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 27

Index FK_TRIAL_REF_COMPLICATION (2)
Depth: 2, leaf buckets: 28, nodes: 107803
Average data length: 0.00, total dup: 107799, max dup: 105712
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 27

Index FK_TRIAL_REF_COURSE (3)
Depth: 2, leaf buckets: 28, nodes: 107803
Average data length: 0.00, total dup: 107579, max dup: 23728
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 27

Index FK_TRIAL_REF_CURRENCY (4)
Depth: 2, leaf buckets: 28, nodes: 107803
Average data length: 0.00, total dup: 107781, max dup: 81858
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 27

Index FK_TRIAL_REF_DEPARTURE (5)
Depth: 2, leaf buckets: 28, nodes: 107803
Average data length: 0.00, total dup: 107796, max dup: 47735
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 27

Index FK_TRIAL_REF_DISTANCE (6)
Depth: 2, leaf buckets: 28, nodes: 107803
Average data length: 0.00, total dup: 107681, max dup: 54401
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 27

Index FK_TRIAL_REF_FARM (9)
Depth: 2, leaf buckets: 22, nodes: 107803
Average data length: 0.00, total dup: 107795, max dup: 105065
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 21

Index FK_TRIAL_REF_PRIZE (7)
Depth: 2, leaf buckets: 28, nodes: 107803
Average data length: 0.02, total dup: 106282, max dup: 63575
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 0
60 - 79% = 1
80 - 99% = 27

Index FK_TRIAL_REF_TRIALTYPE (8)
Depth: 2, leaf buckets: 28, nodes: 107803
Average data length: 0.00, total dup: 107797, max dup: 72799
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 27

Index IDX_TRIAL_BYDATE (0)
Depth: 2, leaf buckets: 29, nodes: 107803
Average data length: 0.31, total dup: 97721, max dup: 35692
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 28

Index PK_TRIAL (1)
Depth: 2, leaf buckets: 35, nodes: 107803
Average data length: 1.02, total dup: 0, max dup: 0
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 34

PRIZE (170)
Primary pointer page: 400, Index root page: 401
Average record length: 89.11, total records: 1543
Average version length: 0.00, total versions: 0, max versions: 0
Data pages: 13, data page slots: 13, average fill: 77%
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 1
80 - 99% = 11

Index FK_PRIZE_REF_AGE (9)
Depth: 1, leaf buckets: 1, nodes: 1543
Average data length: 0.01, total dup: 1532, max dup: 650
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 0
80 - 99% = 0

Index FK_PRIZE_REF_DEPARTURE (8)
Depth: 1, leaf buckets: 1, nodes: 1543
Average data length: 0.01, total dup: 1536, max dup: 940
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 0
80 - 99% = 0

Index FK_PRIZE_REF_DISTANCE (3)
Depth: 1, leaf buckets: 1, nodes: 1543
Average data length: 0.06, total dup: 1459, max dup: 243
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 0
80 - 99% = 0

Index FK_PRIZE_REF_JUSTICE (4)
Depth: 1, leaf buckets: 1, nodes: 1543
Average data length: 0.00, total dup: 1542, max dup: 1542
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 0
80 - 99% = 0

Index FK_PRIZE_REF_SEX (6)
Depth: 1, leaf buckets: 1, nodes: 1543
Average data length: 0.00, total dup: 1540, max dup: 1393
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 0
80 - 99% = 0

Index FK_PRIZE_REF_TRIALSTATE (5)
Depth: 1, leaf buckets: 1, nodes: 1543
Average data length: 0.01, total dup: 1540, max dup: 1088
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 0
80 - 99% = 0

Index FK_PRIZE_REF_TRIALTYPE (7)
Depth: 1, leaf buckets: 1, nodes: 1543
Average data length: 0.00, total dup: 1538, max dup: 1216
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 0
80 - 99% = 0

Index PK_PRIZE_1 (0)
Depth: 1, leaf buckets: 1, nodes: 1543
Average data length: 1.08, total dup: 0, max dup: 0
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 0

Index PRIZE_IDX_NAME (1)
Depth: 2, leaf buckets: 2, nodes: 1543
Average data length: 11.52, total dup: 94, max dup: 8
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 1

Index PRIZE_IDX_NAME_EN (2)
Depth: 2, leaf buckets: 2, nodes: 1543
Average data length: 11.64, total dup: 60, max dup: 7
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 1

TRIAL_LINE (186)
Primary pointer page: 432, Index root page: 433
Average record length: 74.70, total records: 251941
Average version length: 0.00, total versions: 0, max versions: 0
Data pages: 1776, data page slots: 1776, average fill: 80%
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 0
60 - 79% = 1024
80 - 99% = 752

Index FK_TRIAL_LINE_CLASSSHOW (10)
Depth: 2, leaf buckets: 74, nodes: 251941
Average data length: 0.00, total dup: 251932, max dup: 251905
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 73

Index FK_TRIAL_LINE_HORSETITLE (9)
Depth: 2, leaf buckets: 74, nodes: 251941
Average data length: 0.00, total dup: 251940, max dup: 251940
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 73

Index FK_TRIAL_LINE_REF_COUCH (2)
Depth: 2, leaf buckets: 74, nodes: 251941
Average data length: 0.01, total dup: 250383, max dup: 90724
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 0
80 - 99% = 73

Index FK_TRIAL_LINE_REF_DISCIPLINE (3)
Depth: 2, leaf buckets: 74, nodes: 251941
Average data length: 0.00, total dup: 251938, max dup: 174117
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 73

Index FK_TRIAL_LINE_REF_HORSE (4)
Depth: 2, leaf buckets: 77, nodes: 251941
Average data length: 0.23, total dup: 194399, max dup: 354
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 77

Index FK_TRIAL_LINE_REF_MAN (5)
Depth: 2, leaf buckets: 74, nodes: 251941
Average data length: 0.02, total dup: 246209, max dup: 48100
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 73

Index FK_TRIAL_LINE_REF_RANK (6)
Depth: 2, leaf buckets: 74, nodes: 251941
Average data length: 0.00, total dup: 251937, max dup: 251934
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 73

Index FK_TRIAL_LINE_REF_TEAM (7)
Depth: 2, leaf buckets: 74, nodes: 251941
Average data length: 0.00, total dup: 251926, max dup: 251884
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 73

Index FK_TRIAL_LINE_REF_TRIAL (8)
Depth: 2, leaf buckets: 81, nodes: 251941
Average data length: 0.44, total dup: 144534, max dup: 62
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 80

Index PK_TRIAL_LINE (1)
Depth: 2, leaf buckets: 89, nodes: 251941
Average data length: 1.00, total dup: 0, max dup: 0
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 89

Index TRIAL_LINE_PLACE_IDX (0)
Depth: 2, leaf buckets: 73, nodes: 251941
Average data length: 0.00, total dup: 251903, max dup: 65156
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 0
60 - 79% = 1
80 - 99% = 72


Статистика по таблицам для 3.0Database "D:\interbasedata\3.0\horses.fdb"
Database header page information:
Flags 0
Generation 1234
System Change Number 0
Page size 16384
ODS version 12.0
Oldest transaction 1219
Oldest active 1220
Oldest snapshot 1220
Next transaction 1226
Sequence number 0
Next attachment ID 15
Implementation HW=Intel/i386 little-endian OS=Windows CC=MSVC
Shadow count 0
Page buffers 0
Next header page 0
Database dialect 1
Creation date Dec 22, 2013 14:21:41
Attributes force write

Variable header data:
Sweep interval: 20000
*END*


Database file sequence:
File D:\interbasedata\3.0\horses.fdb is the only file

Analyzing database pages ...
PRIZE (170)
Primary pointer page: 487, Index root page: 488
Total formats: 1, used formats: 1
Average record length: 89.11, total records: 1543
Average version length: 0.00, total versions: 0, max versions: 0
Average fragment length: 0.00, total fragments: 0, max fragments: 0
Average unpacked length: 202.00, compression ratio: 2.27
Pointer pages: 1, data page slots: 13
Data pages: 13, average fill: 77%
Primary pages: 13, full pages: 12, swept pages: 0
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 1
80 - 99% = 11

Index FK_PRIZE_REF_AGE (9)
Root page: 81996, depth: 1, leaf buckets: 1, nodes: 1543
Average node length: 3.61, total dup: 1532, max dup: 650
Average key length: 2.01, compression ratio: 2.25
Average prefix length: 4.51, average data length: 0.01
Clustering factor: 89, ratio: 0.06
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 0
80 - 99% = 0

Index FK_PRIZE_REF_DEPARTURE (8)
Root page: 81995, depth: 1, leaf buckets: 1, nodes: 1543
Average node length: 3.61, total dup: 1536, max dup: 940
Average key length: 2.01, compression ratio: 1.00
Average prefix length: 1.99, average data length: 0.01
Clustering factor: 30, ratio: 0.02
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 0
80 - 99% = 0

Index FK_PRIZE_REF_DISTANCE (3)
Root page: 81990, depth: 1, leaf buckets: 1, nodes: 1543
Average node length: 3.66, total dup: 1459, max dup: 243
Average key length: 2.06, compression ratio: 1.84
Average prefix length: 3.73, average data length: 0.06
Clustering factor: 270, ratio: 0.17
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 0
80 - 99% = 0

Index FK_PRIZE_REF_JUSTICE (4)
Root page: 81991, depth: 1, leaf buckets: 1, nodes: 1543
Average node length: 3.60, total dup: 1542, max dup: 1542
Average key length: 2.00, compression ratio: 1.00
Average prefix length: 2.00, average data length: 0.00
Clustering factor: 13, ratio: 0.01
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 0
80 - 99% = 0

Index FK_PRIZE_REF_SEX (6)
Root page: 81993, depth: 1, leaf buckets: 1, nodes: 1543
Average node length: 3.60, total dup: 1540, max dup: 1393
Average key length: 2.00, compression ratio: 0.99
Average prefix length: 1.97, average data length: 0.00
Clustering factor: 35, ratio: 0.02
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 0
80 - 99% = 0

Index FK_PRIZE_REF_TRIALSTATE (5)
Root page: 81992, depth: 1, leaf buckets: 1, nodes: 1543
Average node length: 3.61, total dup: 1540, max dup: 1088
Average key length: 2.01, compression ratio: 1.87
Average prefix length: 3.75, average data length: 0.01
Clustering factor: 21, ratio: 0.01
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 0
80 - 99% = 0

Index FK_PRIZE_REF_TRIALTYPE (7)
Root page: 81994, depth: 1, leaf buckets: 1, nodes: 1543
Average node length: 3.61, total dup: 1538, max dup: 1216
Average key length: 2.00, compression ratio: 0.91
Average prefix length: 1.82, average data length: 0.00
Clustering factor: 21, ratio: 0.01
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 0
80 - 99% = 0

Index PK_PRIZE_1 (0)
Root page: 70920, depth: 1, leaf buckets: 1, nodes: 1543
Average node length: 4.76, total dup: 0, max dup: 0
Average key length: 3.16, compression ratio: 1.11
Average prefix length: 2.43, average data length: 1.08
Clustering factor: 21, ratio: 0.01
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 0

Index PRIZE_IDX_NAME (1)
Root page: 70923, depth: 2, leaf buckets: 2, nodes: 1543
Average node length: 16.04, total dup: 94, max dup: 8
Average key length: 14.39, compression ratio: 1.20
Average prefix length: 5.80, average data length: 11.52
Clustering factor: 1116, ratio: 0.72
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 1

Index PRIZE_IDX_NAME_EN (2)
Root page: 70926, depth: 2, leaf buckets: 2, nodes: 1543
Average node length: 16.17, total dup: 60, max dup: 7
Average key length: 14.55, compression ratio: 1.17
Average prefix length: 5.45, average data length: 11.64
Clustering factor: 1103, ratio: 0.71
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 1

TRIAL (185)
Primary pointer page: 517, Index root page: 518
Total formats: 2, used formats: 1
Average record length: 58.16, total records: 107803
Average version length: 0.00, total versions: 0, max versions: 0
Average fragment length: 0.00, total fragments: 0, max fragments: 0
Average unpacked length: 391.00, compression ratio: 6.72
Pointer pages: 1, data page slots: 647
Data pages: 647, average fill: 77%
Primary pages: 647, full pages: 646, swept pages: 0
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 0
60 - 79% = 646
80 - 99% = 1

Index FK_TRIAL_CURATOR (10)
Root page: 80807, depth: 2, leaf buckets: 28, nodes: 107803
Average node length: 4.15, total dup: 107802, max dup: 107802
Average key length: 2.00, compression ratio: 4.00
Average prefix length: 8.00, average data length: 0.00
Clustering factor: 647, ratio: 0.01
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 27

Index FK_TRIAL_REF_COMPLICATION (2)
Root page: 80581, depth: 2, leaf buckets: 28, nodes: 107803
Average node length: 4.15, total dup: 107799, max dup: 105712
Average key length: 2.00, compression ratio: 3.94
Average prefix length: 7.88, average data length: 0.00
Clustering factor: 701, ratio: 0.01
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 27

Index FK_TRIAL_REF_COURSE (3)
Root page: 80610, depth: 2, leaf buckets: 28, nodes: 107803
Average node length: 4.15, total dup: 107579, max dup: 23728
Average key length: 2.00, compression ratio: 2.04
Average prefix length: 4.08, average data length: 0.00
Clustering factor: 8429, ratio: 0.08
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 27

Index FK_TRIAL_REF_CURRENCY (4)
Root page: 80639, depth: 2, leaf buckets: 28, nodes: 107803
Average node length: 4.15, total dup: 107781, max dup: 81858
Average key length: 2.00, compression ratio: 3.39
Average prefix length: 6.78, average data length: 0.00
Clustering factor: 1061, ratio: 0.01
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 27

Index FK_TRIAL_REF_DEPARTURE (5)
Root page: 80668, depth: 2, leaf buckets: 28, nodes: 107803
Average node length: 4.14, total dup: 107796, max dup: 47735
Average key length: 2.00, compression ratio: 1.00
Average prefix length: 2.00, average data length: 0.00
Clustering factor: 848, ratio: 0.01
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 27

Index FK_TRIAL_REF_DISTANCE (6)
Root page: 80697, depth: 2, leaf buckets: 28, nodes: 107803
Average node length: 4.15, total dup: 107681, max dup: 54401
Average key length: 2.00, compression ratio: 1.59
Average prefix length: 3.18, average data length: 0.00
Clustering factor: 4648, ratio: 0.04
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 27

Index FK_TRIAL_REF_FARM (9)
Root page: 80784, depth: 2, leaf buckets: 22, nodes: 107803
Average node length: 3.17, total dup: 107795, max dup: 105065
Average key length: 1.03, compression ratio: 0.20
Average prefix length: 0.20, average data length: 0.00
Clustering factor: 723, ratio: 0.01
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 21

Index FK_TRIAL_REF_PRIZE (7)
Root page: 80726, depth: 2, leaf buckets: 28, nodes: 107803
Average node length: 4.16, total dup: 106282, max dup: 63575
Average key length: 2.02, compression ratio: 3.09
Average prefix length: 6.21, average data length: 0.02
Clustering factor: 11218, ratio: 0.10
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 0
60 - 79% = 1
80 - 99% = 27

Index FK_TRIAL_REF_TRIALTYPE (8)
Root page: 80755, depth: 2, leaf buckets: 28, nodes: 107803
Average node length: 4.14, total dup: 107797, max dup: 72799
Average key length: 2.00, compression ratio: 0.66
Average prefix length: 1.32, average data length: 0.00
Clustering factor: 742, ratio: 0.01
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 27

Index IDX_TRIAL_BYDATE (0)
Root page: 69719, depth: 2, leaf buckets: 29, nodes: 107803
Average node length: 4.22, total dup: 97721, max dup: 35692
Average key length: 2.07, compression ratio: 2.25
Average prefix length: 4.35, average data length: 0.31
Clustering factor: 38954, ratio: 0.36
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 28

Index PK_TRIAL (1)
Root page: 69749, depth: 2, leaf buckets: 35, nodes: 107803
Average node length: 5.19, total dup: 0, max dup: 0
Average key length: 3.04, compression ratio: 1.31
Average prefix length: 2.96, average data length: 1.02
Clustering factor: 970, ratio: 0.01
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 34

TRIAL_LINE (186)
Primary pointer page: 519, Index root page: 520
Total formats: 2, used formats: 1
Average record length: 74.70, total records: 251941
Average version length: 0.00, total versions: 0, max versions: 0
Average fragment length: 0.00, total fragments: 0, max fragments: 0
Average unpacked length: 280.00, compression ratio: 3.75
Pointer pages: 1, data page slots: 1823
Data pages: 1823, average fill: 78%
Primary pages: 1775, full pages: 1774, swept pages: 0
Blobs: 295, total length: 5506, blob pages: 0
Level 0: 295, Level 1: 0, Level 2: 0
Fill distribution:
0 - 19% = 48
20 - 39% = 0
40 - 59% = 0
60 - 79% = 1024
80 - 99% = 751

Index FK_TRIAL_LINE_CLASSSHOW (10)
Root page: 80506, depth: 2, leaf buckets: 74, nodes: 251941
Average node length: 4.71, total dup: 251932, max dup: 251905
Average key length: 2.00, compression ratio: 3.99
Average prefix length: 8.00, average data length: 0.00
Clustering factor: 1783, ratio: 0.01
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 73

Index FK_TRIAL_LINE_HORSETITLE (9)
Root page: 80431, depth: 2, leaf buckets: 74, nodes: 251941
Average node length: 4.71, total dup: 251940, max dup: 251940
Average key length: 2.00, compression ratio: 4.00
Average prefix length: 8.00, average data length: 0.00
Clustering factor: 1775, ratio: 0.01
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 73

Index FK_TRIAL_LINE_REF_COUCH (2)
Root page: 79896, depth: 2, leaf buckets: 74, nodes: 251941
Average node length: 4.71, total dup: 250383, max dup: 90724
Average key length: 2.01, compression ratio: 2.61
Average prefix length: 5.23, average data length: 0.01
Clustering factor: 35172, ratio: 0.14
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 0
80 - 99% = 73

Index FK_TRIAL_LINE_REF_DISCIPLINE (3)
Root page: 79971, depth: 2, leaf buckets: 74, nodes: 251941
Average node length: 4.70, total dup: 251938, max dup: 174117
Average key length: 2.00, compression ratio: 1.00
Average prefix length: 2.00, average data length: 0.00
Clustering factor: 2008, ratio: 0.01
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 73

Index FK_TRIAL_LINE_REF_HORSE (4)
Root page: 80046, depth: 2, leaf buckets: 77, nodes: 251941
Average node length: 4.94, total dup: 194399, max dup: 354
Average key length: 2.24, compression ratio: 1.78
Average prefix length: 3.76, average data length: 0.23
Clustering factor: 181639, ratio: 0.72
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 77

Index FK_TRIAL_LINE_REF_MAN (5)
Root page: 80124, depth: 2, leaf buckets: 74, nodes: 251941
Average node length: 4.73, total dup: 246209, max dup: 48100
Average key length: 2.03, compression ratio: 2.27
Average prefix length: 4.58, average data length: 0.02
Clustering factor: 57440, ratio: 0.23
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 73

Index FK_TRIAL_LINE_REF_RANK (6)
Root page: 80199, depth: 2, leaf buckets: 74, nodes: 251941
Average node length: 4.71, total dup: 251937, max dup: 251934
Average key length: 2.00, compression ratio: 4.00
Average prefix length: 8.00, average data length: 0.00
Clustering factor: 1779, ratio: 0.01
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 73

Index FK_TRIAL_LINE_REF_TEAM (7)
Root page: 80274, depth: 2, leaf buckets: 74, nodes: 251941
Average node length: 4.71, total dup: 251926, max dup: 251884
Average key length: 2.00, compression ratio: 3.99
Average prefix length: 8.00, average data length: 0.00
Clustering factor: 1783, ratio: 0.01
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 73

Index FK_TRIAL_LINE_REF_TRIAL (8)
Root page: 80349, depth: 2, leaf buckets: 81, nodes: 251941
Average node length: 5.15, total dup: 144534, max dup: 62
Average key length: 2.45, compression ratio: 1.63
Average prefix length: 3.54, average data length: 0.44
Clustering factor: 16703, ratio: 0.07
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 80

Index PK_TRIAL_LINE (1)
Root page: 69628, depth: 2, leaf buckets: 89, nodes: 251941
Average node length: 5.71, total dup: 0, max dup: 0
Average key length: 3.01, compression ratio: 1.33
Average prefix length: 2.99, average data length: 1.00
Clustering factor: 2844, ratio: 0.01
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 0
60 - 79% = 1
80 - 99% = 88

Index TRIAL_LINE_PLACE_IDX (0)
Root page: 69554, depth: 2, leaf buckets: 73, nodes: 251941
Average node length: 4.68, total dup: 251903, max dup: 65156
Average key length: 1.97, compression ratio: 0.79
Average prefix length: 1.56, average data length: 0.00
Clustering factor: 14023, ratio: 0.06
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 0
60 - 79% = 1
80 - 99% = 72


Чем это можно объяснить?
...
Рейтинг: 0 / 0
22.12.2013, 19:19
    #38509346
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
базу выслать можешь?
...
Рейтинг: 0 / 0
22.12.2013, 20:08
    #38509360
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
dimitr,

да.
...
Рейтинг: 0 / 0
22.12.2013, 20:25
    #38509367
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
dimitr,

отправил письмо в личку через gmail
...
Рейтинг: 0 / 0
22.12.2013, 20:31
    #38509372
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
скачал, спасибо
...
Рейтинг: 0 / 0
22.12.2013, 20:36
    #38509374
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
Симонов Денис,

на всякий случай - у тебя кэши разные. у 2.5 256, а у 3.0 8192. Обращай внимание, когда сравниваешь.
...
Рейтинг: 0 / 0
22.12.2013, 20:39
    #38509378
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
kdv,

да это я знаю. Просто вроде как на план это влиять не должно
...
Рейтинг: 0 / 0
22.12.2013, 22:32
    #38509427
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
Симонов ДенисПросто вроде как на план это влиять не должно
это понятно, но на другие штуки это влияет.
...
Рейтинг: 0 / 0
22.12.2013, 22:39
    #38509430
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
kdv,

меня удивило, что SS, в котором кэш в 32 раза больше, делает больше фетчей. Причиной как я понимаю является неверный план. ДЕ уже разбирается
...
Рейтинг: 0 / 0
22.12.2013, 23:04
    #38509439
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
Симонов Денисменя удивило, что SS, в котором кэш в 32 раза больше, делает больше фетчей.Размер кеша не влияет на кол-во фетчей. На кол-во read\write - да, но не на фетчи.
...
Рейтинг: 0 / 0
22.12.2013, 23:21
    #38509444
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
hvlad,

ну что reads больше я и не удивлён. Так то да, на фетчи влиять не должно.
...
Рейтинг: 0 / 0
04.03.2014, 14:28
    #38577803
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
dimitr,

удалось локализовать проблему?
...
Рейтинг: 0 / 0
02.03.2015, 20:48
    #38892876
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
мне удалось сделать воспроизводимый тест кейс

скрипт наполнения
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
ALTER TABLE TRIAL_LINE DROP CONSTRAINT FK_TRIAL_LINE_TRIAL;
ALTER TABLE TRIAL DROP CONSTRAINT FK_TRIAL_PRIZE;

RECREATE TABLE TRIAL (
    CODE_TRIAL         INTEGER NOT NULL,
    CODE_PRIZE         INTEGER NOT NULL
);


RECREATE TABLE PRIZE (
    CODE_PRIZE          INTEGER NOT NULL,
    NAME                VARCHAR(70) NOT NULL
);

RECREATE TABLE TRIAL_LINE (
    CODE_TRIAL_LINE         INTEGER NOT NULL,
    CODE_TRIAL              INTEGER NOT NULL
);

INSERT INTO PRIZE(CODE_PRIZE, NAME)
WITH RECURSIVE T (N) AS (
  SELECT 1 FROM RDB$DATABASE
  UNION ALL
  SELECT N+1 FROM T WHERE N < 1000
)
SELECT N+8000, '' FROM T;

COMMIT;

INSERT INTO TRIAL(CODE_TRIAL, CODE_PRIZE)
WITH RECURSIVE T (N) AS (
  SELECT 1 FROM RDB$DATABASE
  UNION ALL
  SELECT N+1 FROM T WHERE N < 1000
)
SELECT T1.N + (T2.N-1)*1000, T1.N+8000 FROM T T1, T T2 WHERE T1.N + (T2.N-1)*1000 < 100000;

COMMIT;

INSERT INTO TRIAL_LINE(CODE_TRIAL_LINE, CODE_TRIAL)
WITH RECURSIVE T (N) AS (
  SELECT 1 FROM RDB$DATABASE
  UNION ALL
  SELECT N+1 FROM T WHERE N < 1000
)
SELECT T1.N + (T2.N-1)*1000, MOD(T1.N + (T2.N-1)*1000, 99999)+1 FROM T T1, T T2 WHERE T1.N + (T2.N-1)*1000 < 150000;

COMMIT;

ALTER TABLE TRIAL ADD CONSTRAINT PK_TRIAL PRIMARY KEY (CODE_TRIAL);
ALTER TABLE PRIZE ADD CONSTRAINT PK_PRIZE PRIMARY KEY (CODE_PRIZE);
ALTER TABLE TRIAL_LINE ADD CONSTRAINT PK_TRIAL_LINE PRIMARY KEY (CODE_TRIAL_LINE);

ALTER TABLE TRIAL_LINE ADD CONSTRAINT FK_TRIAL_LINE_TRIAL FOREIGN KEY (CODE_TRIAL) REFERENCES TRIAL (CODE_TRIAL);
ALTER TABLE TRIAL ADD CONSTRAINT FK_TRIAL_PRIZE FOREIGN KEY (CODE_PRIZE) REFERENCES PRIZE (CODE_PRIZE);



выполняем запрос

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT
    TRIAL.CODE_TRIAL AS CODE_TRIAL,
    PRIZE.CODE_PRIZE AS CODE_PRIZE,
    TRIAL_LINE.CODE_TRIAL_LINE AS CODE_TRIAL_LINE
FROM
    TRIAL
    JOIN PRIZE ON PRIZE.CODE_PRIZE = TRIAL.CODE_PRIZE
    JOIN TRIAL_LINE ON TRIAL_LINE.CODE_TRIAL = TRIAL.CODE_TRIAL
WHERE TRIAL.CODE_TRIAL = 19303



план в 2.5

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
План
PLAN JOIN (TRIAL INDEX (PK_TRIAL), PRIZE INDEX (PK_PRIZE), TRIAL_LINE INDEX (FK_TRIAL_LINE_TRIAL))

------ Информация о производительности ------
Время подготовки запроса = 16ms
Время выполнения запроса = 0ms
Среднее время на получение одной записи = 0,00 ms
Current memory = 18 097 420
Max memory = 25 522 832
Memory buffers = 1 024
Reads from disk to cache = 0
Writes from cache to disk = 0
Чтений из кэша = 28

план в 3.0

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
План
PLAN JOIN (TRIAL INDEX (PK_TRIAL), TRIAL_LINE INDEX (FK_TRIAL_LINE_TRIAL), PRIZE INDEX (PK_PRIZE))

Select Expression
    ->  Nested Loop Join (inner)
        -> Filter
            -> Table "TRIAL" Access By ID
                -> Bitmap
                    -> Index "PK_TRIAL" Unique Scan
        -> Filter
            -> Table "TRIAL_LINE" Access By ID
                -> Bitmap
                    -> Index "FK_TRIAL_LINE_TRIAL" Range Scan (full match)
        -> Filter
            -> Table "PRIZE" Access By ID
                -> Bitmap
                    -> Index "PK_PRIZE" Unique Scan

------ Информация о производительности ------
Время подготовки запроса = 0ms
Время выполнения запроса = 0ms
Среднее время на получение одной записи = 0,00 ms
Current memory = 148 245 312
Max memory = 161 708 832
Memory buffers = 16 384
Reads from disk to cache = 0
Writes from cache to disk = 0
Чтений из кэша = 39

похоже в 3.x идёт какая-то потеря точности при вычислении оценки, а в 2.x зашита эвристика, что раз мы дёргаем таблицу по уникальному индексу, то это дешевле.
...
Рейтинг: 0 / 0
02.03.2015, 21:13
    #38892892
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
Симонов Денис,

у тебя опять кэши разные. а планы - одинаковые. если я правильно помню, в таком плане порядок индексов или таблиц не важен. вот если left/right join, тогда таблицы будут объединяться попарно, и там порядок уже важен.
...
Рейтинг: 0 / 0
02.03.2015, 21:41
    #38892904
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
эвристики в 2.5 и 3.0 одинаковы, стоимость этих планов сравнима (сильно упрощая, это выбор между X*Y И Y*X). Где-то что-то поменялось в расчете, вызвав данную флуктуацию, но я пока не уверен что это проблема.
...
Рейтинг: 0 / 0
02.03.2015, 22:10
    #38892927
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
kdv,

Как раз планы разные. И от кеша это вроде как не зависит. Этот пример попытка воспроизведения того что описано в самом первом сообщении, а там разница уже существенная.
...
Рейтинг: 0 / 0
02.03.2015, 23:16
    #38892975
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
Симонов ДенисКак раз планы разные.
где они разные?

2.5
PLAN JOIN (TRIAL INDEX (PK_TRIAL), PRIZE INDEX (PK_PRIZE), TRIAL_LINE INDEX (FK_TRIAL_LINE_TRIAL))

3.0
PLAN JOIN (TRIAL INDEX (PK_TRIAL), TRIAL_LINE INDEX (FK_TRIAL_LINE_TRIAL), PRIZE INDEX (PK_PRIZE))

2 последних индекса поменяны местами. Ты считаешь, это как-то влияет? Я считаю, что никак, мысль об этом уже привел выше.
...
Рейтинг: 0 / 0
02.03.2015, 23:32
    #38892985
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
kdv,

порядок соединения влияет на стоимость. Я могу продемонстрировать это на исходной БД.

Итак исходный запрос

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
    COUNT(*)
FROM
    TRIAL
    JOIN PRIZE ON PRIZE.CODE_PRIZE = TRIAL.CODE_PRIZE
    JOIN TRIAL_LINE ON TRIAL_LINE.CODE_TRIAL = TRIAL.CODE_TRIAL
WHERE TRIAL.BYDATE BETWEEN '01.01.2000' AND '01.01.2010'



возвращает 64686 записей

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
План
PLAN JOIN (TRIAL INDEX (IDX_TRIAL_BYDATE), TRIAL_LINE INDEX (FK_TRIAL_LINE_TRIAL), PRIZE INDEX (PK_PRIZE))

------ Информация о производительности ------
Время подготовки запроса = 0ms
Время выполнения запроса = 468ms
Среднее время на получение одной записи = 468,00 ms
Current memory = 557 704 160
Max memory = 557 728 320
Memory buffers = 32 768
Reads from disk to cache = 0
Writes from cache to disk = 0
Чтений из кэша = 500 992

меняем порядок

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
    COUNT(*)
FROM
    TRIAL
    LEFT JOIN PRIZE ON PRIZE.CODE_PRIZE = TRIAL.CODE_PRIZE
    JOIN TRIAL_LINE ON TRIAL_LINE.CODE_TRIAL = TRIAL.CODE_TRIAL
WHERE TRIAL.BYDATE BETWEEN '01.01.2000' AND '01.01.2010'



возвращает 64686 записей

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
План
PLAN JOIN (JOIN (TRIAL INDEX (IDX_TRIAL_BYDATE), PRIZE INDEX (PK_PRIZE)), TRIAL_LINE INDEX (FK_TRIAL_LINE_TRIAL))

------ Информация о производительности ------
Время подготовки запроса = 0ms
Время выполнения запроса = 390ms
Среднее время на получение одной записи = 390,00 ms
Current memory = 557 708 800
Max memory = 557 800 432
Memory buffers = 32 768
Reads from disk to cache = 0
Writes from cache to disk = 0
Чтений из кэша = 332 436

По числу фетчей разница 168556. Да и по времени заметна.
Второй запрос как раз похож на то что даёт в этом случае 2.5
...
Рейтинг: 0 / 0
02.03.2015, 23:53
    #38892994
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
Симонов Денис,

в запросе с inner join нет "порядка". А в запросе с left join - есть, о чем я и говорил. Но я не настолько знаю потроха оптимизатора, чтобы утверждать, что планы

PLAN JOIN (TRIAL INDEX (IDX_TRIAL_BYDATE), TRIAL_LINE INDEX (FK_TRIAL_LINE_TRIAL), PRIZE INDEX (PK_PRIZE))

и

PLAN JOIN (JOIN (TRIAL INDEX (IDX_TRIAL_BYDATE), TRIAL_LINE INDEX (FK_TRIAL_LINE_TRIAL)), PRIZE INDEX (PK_PRIZE))

идентичны именно в порядке выполнения. По статистике - да, можно сделать вывод об одинаковости, но тут у меня нет 100% уверенности. dimitr?

меня тут даже больше беспокоит вопрос, что если эти планы по выполнению join идентичны, то почему сервер для неявных и inner join выводит первый план, а не второй.
Надеюсь, ответ будет не риторическим, типа, "так сделал Джим" :-)
...
Рейтинг: 0 / 0
03.03.2015, 00:00
    #38892997
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
kdv,

в расширенном плане это видно однозначно. По идее если бы я присоединял обе таблицы по уникальному индексу то разницы быть не должно. Так как оба соединения не увеличивают кардинальность. А вот когда присоединяется по неуникальному индексу то тут разница быть должна. Ну посмотрим что скажет dimitr
...
Рейтинг: 0 / 0
03.03.2015, 00:56
    #38893023
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
навскидку, первый план (который от 2.5) должен иметь чуть меньшую стоимость. Детально проверять у меня сейчас времени нет, пардон.
...
Рейтинг: 0 / 0
03.03.2015, 01:01
    #38893026
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
Денис, попробуй в своем тесте уникальную выборку по CODE_TRIAL заменить на выборку по диапазону. Разница во времени выполнения между планами должна стать более заметной. Если так оно и будет, то пример можно закинуть в трекер, чтобы не забылось.
...
Рейтинг: 0 / 0
03.03.2015, 09:31
    #38893133
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
dimitr,

тут какая то фигня стала твориться

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
    count(*)
FROM
    TRIAL
    JOIN PRIZE ON PRIZE.CODE_PRIZE = TRIAL.CODE_PRIZE
    JOIN TRIAL_LINE ON TRIAL_LINE.CODE_TRIAL = TRIAL.CODE_TRIAL
WHERE TRIAL.CODE_TRIAL between 1 and 20000



трёшка

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
План
PLAN JOIN (PRIZE NATURAL, TRIAL INDEX (FK_TRIAL_PRIZE, PK_TRIAL), TRIAL_LINE INDEX (FK_TRIAL_LINE_TRIAL))

------ Информация о производительности ------
Время подготовки запроса = 0ms
Время выполнения запроса = 1s 29ms
Среднее время на получение одной записи = 1 029,00 ms
Current memory = 145 112 552
Max memory = 145 333 832
Memory buffers = 16 384
Reads from disk to cache = 0
Writes from cache to disk = 0
Чтений из кэша = 200 105

2.5

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
План
PLAN JOIN (TRIAL INDEX (PK_TRIAL), PRIZE INDEX (PK_PRIZE), TRIAL_LINE INDEX (FK_TRIAL_LINE_TRIAL))

------ Информация о производительности ------
Время подготовки запроса = 15ms
Время выполнения запроса = 297ms
Среднее время на получение одной записи = 297,00 ms
Current memory = 17 748 372
Max memory = 17 803 348
Memory buffers = 1 024
Reads from disk to cache = 0
Writes from cache to disk = 0
Чтений из кэша = 260 030

по фетчам в трёшки выигрыш, а вот по времени наоборот. Да и вообще план уже совсем другой вылетел.

Попробую добавить в таблицу TRIAL третье индексированное поле чтобы было похоже на изначальный запрос в рабочей БД
...
Рейтинг: 0 / 0
03.03.2015, 12:54
    #38893412
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странности в оптимизаторе 3.x
dimitr,

вроде сделал CORE-4702

хотя какую-то прям громадную разницу получить не удалось, что в принципе и ожидалось
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Странности в оптимизаторе 3.x / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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