|
Почему индекс не работает для обратного упорядочивания?
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5.
1. Прямой порядок Код: sql 1.
plan ( T order PK ) 2. Обратный порядок Код: sql 1.
plan sort (V natural) 2a. Попытка обратного порядка Код: sql 1.
index PK cannot be used in the specified plan Почему? Почему нельзя использовать существующий индекс для обратного упорядочивания? Ведь это ровно тот же самый порядок, только с другим знаком. Да, я знаю, что можно создать еще и descending индекс, но зачем создавать два индекса, когда, казалось бы, можно было бы обойтись и одним? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2018, 16:18 |
|
Почему индекс не работает для обратного упорядочивания?
|
|||
---|---|---|---|
#18+
shalamyanskyПочему нельзя использовать существующий индекс для обратного упорядочивания? потому что индексы в ИБ и ФБ однонаправленные. По ним можно "ходить" только в направлении сортировки ключей, либо ASC, либо DESC. В обратную сторону - нельзя. Сделано это якобы потому, что у двунаправленных индексов при расщеплении страниц одновременно должны быть модифицированы 3 страницы (2 листовых и одна страница указателей), что приводит к ненадежности при сбоях. У однонаправленного одновременно модифицируются только 2 страницы. Типа так. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2018, 16:23 |
|
Почему индекс не работает для обратного упорядочивания?
|
|||
---|---|---|---|
#18+
shalamyansky, можешь почитать вот это https://tproger.ru/translations/linked-list-for-beginners/ грубо говоря, "односвязный список" в этой статье - и есть наши индексы. Двунаправленные индексы - это двусвязный список. Разница в том, что списки в статье - это списки в памяти. А индексы в БД сложнее, потому что список разделен на страницы. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2018, 16:27 |
|
Почему индекс не работает для обратного упорядочивания?
|
|||
---|---|---|---|
#18+
Во как. Спасибо за разъяснение! Однако этот факт хорошо бы где-нибудь прописать. В руководстве по языку я не увидел, возможно, плохо смотрел. И ничтоже сумнятеша полагался на существующие индексы. Хорошо, на толстой базе заметил уже чисто по времени исполнения запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2018, 16:32 |
|
Почему индекс не работает для обратного упорядочивания?
|
|||
---|---|---|---|
#18+
shalamyansky План с Order не всегда лучше чем с Sort ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2018, 16:52 |
|
Почему индекс не работает для обратного упорядочивания?
|
|||
---|---|---|---|
#18+
shalamyansky, Я тоже был недоволен такой ситуацией. Есть здесь мой топик на эту тему. Дело особенно неприятное, когда индексы составные. Приходится создавать несколько однотипных. Разработчики знают о проблеме и вроде как хотят решить её. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2018, 16:55 |
|
Почему индекс не работает для обратного упорядочивания?
|
|||
---|---|---|---|
#18+
составные индексы - зло. (за исключением CONSTRAINT UNIQUE) в это случае оно просто неизбежное. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2018, 16:58 |
|
Почему индекс не работает для обратного упорядочивания?
|
|||
---|---|---|---|
#18+
KreatorXXIРазработчики знают о проблеме и вроде как хотят решить её. За прошедшие с выпуска Interbase 30 лет решения этой проблемы так никто и не нашёл. PS: Проблема не в надёжности, а дедлоках. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2018, 18:06 |
|
Почему индекс не работает для обратного упорядочивания?
|
|||
---|---|---|---|
#18+
shalamyansky, KreatorXXI видимо, вы оба не смотрели мое видео ORDER vs SORT. И про оптимизатор тоже. https://www.youtube.com/user/ibdeveloper ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2018, 20:29 |
|
Почему индекс не работает для обратного упорядочивания?
|
|||
---|---|---|---|
#18+
shalamyanskyВо как. Спасибо за разъяснение! Однако этот факт хорошо бы где-нибудь прописать. В руководстве по языку я не увидел, возможно, плохо смотрел. И ничтоже сумнятеша полагался на существующие индексы. Хорошо, на толстой базе заметил уже чисто по времени исполнения запросов. есть там это, но очень кратко в описании создания индекса. Впрочем этого достаточно, ибо описание языка и не должно разжёвывать как работает оптимизатор. Это есть в отдельной статье про методы доступа ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2018, 20:50 |
|
|
start [/forum/topic.php?fid=40&msg=39646265&tid=1561103]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
129ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 315ms |
total: | 526ms |
0 / 0 |