powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / group by <X> при наличии descend-индекса по полю <X> НЕ задействует индекс. Why ?
5 сообщений из 5, страница 1 из 1
group by <X> при наличии descend-индекса по полю <X> НЕ задействует индекс. Why ?
    #38710930
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
group by <X> при наличии descend-индекса по полю <X> НЕ задействует индекс. Why ?
    #38712025
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

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

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


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