Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Большое число фетчей window function + left join / 5 сообщений из 5, страница 1 из 1
19.01.2014, 20:30:44
    #38531168
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большое число фетчей window function + left join
Firebird 3.0.0.30849

Выполняю такой запрос

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
WITH T
AS (SELECT T1_ID AS T1_ID,
           SUM(ID) OVER() AS S
    FROM T2)
SELECT COUNT(*)
FROM T
LEFT JOIN T1 ON T.T1_ID = T1.ID
WHERE T.S = 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.
28.
29.
30.
31.
32.
33.
34.
COUNT
0

Plan
------------------------------------------------
PLAN JOIN (T T2 NATURAL, T1 INDEX (PK_T1))

Query Time
------------------------------------------------
Prepare       : 0,00 ms
Execute       : 15,00 ms
Avg fetch time: 15,00 ms

Memory
------------------------------------------------
Current: 279 134 792
Max    : 279 554 648
Buffers: 16 384

Operations
------------------------------------------------
Read   : 0
Writes : 0
Fetches: 6 015
Marks  : 0


Enchanced Info:
+-------------------------------+-----------+-----------+-------------+---------+---------+---------+----------+----------+----------+
|          Table Name           |  Records  |  Indexed  | Non-Indexed | Updates | Deletes | Inserts | Backouts |  Purges  | Expunges |
|                               |   Total   |   reads   |    reads    |         |         |         |          |          |          |
+-------------------------------+-----------+-----------+-------------+---------+---------+---------+----------+----------+----------+
|T1                             |         0 |      1000 |           0 |       0 |       0 |       0 |        0 |        0 |        0 |
|T2                             |         0 |         0 |        1000 |       0 |       0 |       0 |        0 |        0 |        0 |
+-------------------------------+-----------+-----------+-------------+---------+---------+---------+----------+----------+----------+

Откуда для T1 1000 индексных чтений, если после вот этого WHERE T.S = 0 должно быть 0?

DDL и тестовые данныеCREATE TABLE T1 (
ID INTEGER NOT NULL
);

CREATE TABLE T2 (
ID INTEGER NOT NULL,
T1_ID INTEGER
);

SET TERM ^;

EXECUTE BLOCK
AS
DECLARE VARIABLE I INTEGER = 0;
BEGIN
WHILE (I < 1000) DO BEGIN
I = I + 1;

INSERT INTO T2(ID, T1_ID) VALUES(:I, MOD(:I, 10));

MERGE INTO T1 USING (
SELECT MOD(:I, 10) AS F FROM RDB$DATABASE
) SRC ON T1.ID = SRC.F
WHEN NOT MATCHED THEN
INSERT (ID) VALUES(SRC.F);

END -- WHILE (I < 1000) DO BEGIN

END^

SET TERM ;^

COMMIT;

ALTER TABLE T1 ADD CONSTRAINT PK_T1 PRIMARY KEY (ID);
ALTER TABLE T2 ADD CONSTRAINT PK_T2 PRIMARY KEY (ID);
ALTER TABLE T2 ADD CONSTRAINT FK_T2_REF_T1 FOREIGN KEY (T1_ID) REFERENCES T1(ID);
...
Рейтинг: 0 / 0
19.01.2014, 21:00:47
    #38531177
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большое число фетчей window function + left join
Симонов Денис,

это древний баян, насколько я понимаю, оконные функции тут не причем. Воткни внутрь CTE процедуру или запрос с FIRST/SKIP - получишь тоже самое.
...
Рейтинг: 0 / 0
19.01.2014, 21:07:17
    #38531182
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большое число фетчей window function + left join
dimitr,

да точно. Будем надеяться что к финальному релизу эту особенность поправят.
...
Рейтинг: 0 / 0
19.01.2014, 21:08:03
    #38531184
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большое число фетчей window function + left join
это есть в трекере, скоро исправлю
...
Рейтинг: 0 / 0
19.01.2014, 21:09:04
    #38531185
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большое число фетчей window function + left join
и этот баян относится ко всем версиям ФБ, а не только к 3.0. Так что править надо бы не только "к финальному релизу" :-)
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Большое число фетчей window function + left join / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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