|
Повтор полей в сортировке и группировке
|
|||
---|---|---|---|
#18+
FB 2.5.6. Запрос Код: sql 1. 2. 3. 4. 5. 6.
дает план: Код: plaintext
Запрос Код: sql 1. 2. 3. 4. 5. 6. 7.
дает план Код: plaintext
Вопросы: 1. Имеет ли смысл делать ли тикет, чтобы оптимизатор убирал повторы условий сортировки и группировки? 2. Является ли багом, что оптимизатор при втором условии отбрасывает индекс и переходит на натуральный перебор? P.S. Проверил другое второе поле: Код: sql 1. 2. 3. 4. 5. 6. 7.
Все равно переходит на NATURAL: Код: plaintext
Хотя тут очевидно, что надо оставить сортировку по индексу и досортировать натуралом по другим полям. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 10:40 |
|
Повтор полей в сортировке и группировке
|
|||
---|---|---|---|
#18+
CyberMaxХотя тут очевидно, что надо оставить сортировку по индексу и досортировать натуралом по другим полям.А что такое - досортировать ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 10:42 |
|
Повтор полей в сортировке и группировке
|
|||
---|---|---|---|
#18+
CyberMaxВопросы: 1. Имеет ли смысл делать ли тикет, чтобы оптимизатор убирал повторы условий сортировки и группировки? 2. Является ли багом, что оптимизатор при втором условии отбрасывает индекс и переходит на натуральный перебор? 1. Да, но пример ты кривой привёл. Это скорее похоже на описку того кто писал запрос. А вот в других случаях надо, например группировка и сортировка по одним и тем же полям, или когда присутствует CTE с внутренней сортировкой, а потом ещё раз неявно внешняя сортировка, или когда есть сортировка и MERGE JOIN, или присутствуют оконные функции с одним и тем же окном. 2. Нет. Далеко не факт что сортировка сначала по индексу, а потом так называемая "досортировка" будет дешевле. Скорее даже наоборот. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 10:48 |
|
Повтор полей в сортировке и группировке
|
|||
---|---|---|---|
#18+
hvladА что такое - досортировать ? я так понял что он хочет сначала собрать одинаковые значения по R.RDB$RELATION_NAME, а потом их отсортировать по R.RDB$FORMAT, потом взять следующие значения с одинаковым R.RDB$RELATION_NAME и снова отсортировать. ИХМО, намного дороже выйдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 10:52 |
|
Повтор полей в сортировке и группировке
|
|||
---|---|---|---|
#18+
hvlad, Денис выше собственно ответил. Но насчет дороже - не согласен. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 10:55 |
|
Повтор полей в сортировке и группировке
|
|||
---|---|---|---|
#18+
Симонов Денис1. Да, но пример ты кривой привёл. Это скорее похоже на описку того кто писал запрос Да, я в том числе про описку и имел ввиду. Имхо, тут должно быть либо игнорирование, либо исключение о повторе поля сортировки/группировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 10:57 |
|
Повтор полей в сортировке и группировке
|
|||
---|---|---|---|
#18+
Добавлю еще. При сортировке по ПК или по полям, которые входят в уникальный ключ, и при наличии других полей для сортировке, FB должен либо игнорить их, либо выдавать исключение, так как они гарантированно никак не повлияют на результат этой самой сортировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 10:59 |
|
Повтор полей в сортировке и группировке
|
|||
---|---|---|---|
#18+
CyberMaxНо насчет дороже - не согласен.Ты уже посчитал ? Покажешь рассчёты ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 11:05 |
|
Повтор полей в сортировке и группировке
|
|||
---|---|---|---|
#18+
CyberMaxПри сортировке по ПК или по полям, которые входят в уникальный ключ, и при наличии других полей для сортировке, FB должен либо игнорить ихЭто единственная мысль, которую имеет смысл додумать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 11:06 |
|
|
start [/forum/topic.php?fid=40&msg=39317611&tid=1561954]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 268ms |
total: | 417ms |
0 / 0 |