Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / group by <X> при наличии descend-индекса по полю <X> НЕ задействует индекс. Why ? / 5 сообщений из 5, страница 1 из 1
01.08.2014, 15:11
    #38710930
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by <X> при наличии descend-индекса по полю <X> НЕ задействует индекс. Why ?
hi all

Сабж. Это боян или нет ?
test
Код: 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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
SQL> recreate table t(x int, y int); commit;
SQL> insert into t select rand()*5, rand()*5 from rdb$types, rdb$types; commit;

----------------------------------------------------
-- ascend-индекс по одному полю:
SQL> create index t_x_asc on t(x); commit;
SQL> set planonly;

SQL> select x,max(y) from t group by x;
PLAN (T ORDER T_X_ASC) -- Ok

SQL> select x,min(y) from t group by x;
PLAN (T ORDER T_X_ASC) -- Ok

SQL> set planonly;
SQL> drop index t_x_asc; commit;
----------------------------------------------------

-- descend-индекс по одному полю:
SQL> create DESCENDING index t_x_desc on t(x); commit;
SQL> set planonly;

SQL> select x,max(y) from t group by x;
PLAN SORT ((T NATURAL)) -- ???

SQL> select x,min(y) from t group by x;
PLAN SORT ((T NATURAL)) -- ???

SQL> set planonly;
SQL> drop index t_x_desc; commit;
------------------------------------------------------

-- ascend-индекс по двум полям:
SQL> create index t_x_y_asc on t(x, y); commit;
SQL> set planonly;
SQL> select x,max(y) from t group by x;
PLAN (T ORDER T_X_Y_ASC) -- Ok

SQL> select x,min(y) from t group by x;
PLAN (T ORDER T_X_Y_ASC) -- Ok

SQL> set planonly;
SQL> drop index t_x_y_asc;
------------------------------------------------------

-- descend-индекс по двум полям:
SQL> create DESCENDING index t_x_y_desc on t(x, y); commit;
SQL> set planonly;

SQL> select x,max(y) from t group by x;
PLAN SORT ((T NATURAL)) -- ???

SQL> select x,min(y) from t group by x;
PLAN SORT ((T NATURAL)) -- ???

SQL> set planonly;
SQL> drop index t_x_y_desc; commit;
ЗЫ. вижу на WI-V2.5.3.26726 и LI-T3.0.0.31250
...
Рейтинг: 0 / 0
04.08.2014, 12:41
    #38712025
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by <X> при наличии descend-индекса по полю <X> НЕ задействует индекс. Why ?
Таблоид,

Видимо, потому, что GROUP BY заточено (каким-то образом) на сортировку ASC.
...
Рейтинг: 0 / 0
04.08.2014, 13:55
    #38712121
vlad333
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by <X> при наличии descend-индекса по полю <X> НЕ задействует индекс. Why ?
А вот интересно, есть ли гарантия, что в будущих версиях ФБ сохранится
сортировка при group by ?
В "более других" серверах при группировке сортировка не осуществляется.
...
Рейтинг: 0 / 0
04.08.2014, 13:57
    #38712126
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by <X> при наличии descend-индекса по полю <X> НЕ задействует индекс. Why ?
vlad333А вот интересно, есть ли гарантия, что в будущих версиях ФБ сохранится
сортировка при group by ?
В "более других" серверах при группировке сортировка не осуществляется.Как только будет группировка через хеширование, так и "ку-ку" всякому упорядоченному выводу.
...
Рейтинг: 0 / 0
04.08.2014, 14:04
    #38712134
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
group by <X> при наличии descend-индекса по полю <X> НЕ задействует индекс. Why ?
Таблоид,

ой не факт. Каждый метод по своему хорош. Решать оптимизатору, но полагаться на то, что будет отсортировано лучше не стоит
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / group by <X> при наличии descend-индекса по полю <X> НЕ задействует индекс. Why ? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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