powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Идентично ли "ORDER BY ID" отсутствию сортировки?
25 сообщений из 40, страница 1 из 2
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36611133
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сравнивая 2009 и 2010 версии в нескольких местах обнаружил неприятность: Если стоит безобидный вроде бы ORDER BY ID, иногда в 2010 запрос выполняется ощутимо дольше, чем при отсутствии сортировки вовсе.

Вопрос: Могу ли я безболезненно убрать ORDER BY ID? Вроде бы да... Но, то-ж Каше ;)
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36611150
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"ощутимо" в данном случае - в сотни тысяч раз медленнее работает запрос ;)
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36611283
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не уверен, что всегда, зависит от плана запроса.
Кстати замечал, что при сортировки по индексированному полю каше упорно хочет по нему пойти (а ид по умолчанию индексирован)

Попробуйте сделать
d $system.SQL.TuneTable("*",1,1)
Вместо звездочки назвение вашей таблицы, может перестройка селективности уберет проблему?
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36611334
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolesov,

по моему опыту order by id всегда получался автоматически.

Но индексов и условий экзотических не было.

Хотя не очень понимаю, почему order by id замедляет запрос в сотни тысяч раз. Какого размера получается выборка для сортировки?

Можно пример такого запроса?
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36611362
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolesov,

и подразумеваем, что структура хранения стандартная, а не экзотический sqlstorage с вычисляемыми Id...
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36611487
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему так происходит - в принципе понятно
есть индексы по каким-то полям, идет выборка по этим полям - все как обычно

И тут появляется сортировка по одному из полей, и это поле тоже индексировано.
Так вот, каше в некоторых случаях считает, что накладные расходы на сортировку по этому полю будут меньше, если сразу по этому индексу делать выборку.

Почему я предложил перестроить сделать TuneTable - возможно EXTENTSIZE у таблице не соответвует реальному и каше считает, что в таблице пара десятков записей и не стоит заморачиваться какими-то индексами, тем более что селективность по другим полям наверняка тоже выставлена неверно.

Еще как вариант, если не поможет TuneTable, сделать order by tochar(ID), думаю, каше не сможет использовать индекс для выражения и пойдет по другим индексам.
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36611662
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesovИдентично ли "ORDER BY ID" отсутствию сортировки?

Нет и никогда не было.

kolesovВопрос: Могу ли я безболезненно убрать ORDER BY ID? Вроде бы да... Но, то-ж Каше ;)

Можете - если вам в том куске кода с запросом безразличен порядок записей - иначе смотри выше
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36611665
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov"ощутимо" в данном случае - в сотни тысяч раз медленнее работает запрос ;)

Ну тут план запросов (с сортировкой и без) смотреть нужно и структуру данных.

Ище у Вас случайно ID не переопределен ?

Если вместо ORDER BY ID использовать ORDER BY %ID что нибудь измениться ?
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36611928
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolesov,

Ptn
Если вместо ORDER BY ID использовать ORDER BY %ID что нибудь измениться ?
А если вместо ORDER BY ID другое поле - то есть проблема замедления связана с ID или с сортировкой?
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36611964
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Не уверен, что всегда, зависит от плана запроса.
Кстати замечал, что при сортировки по индексированному полю каше упорно хочет по нему пойти (а ид по умолчанию индексирован)

Попробуйте сделать
d $system.SQL.TuneTable("*",1,1)
Вместо звездочки назвение вашей таблицы, может перестройка селективности уберет проблему?

EXTENTSIZE = 100000 по-умолчанию, как я понял
Настроена таблица ручками - как раз для проходов по нужным индексам. TuneTable нежелателен, все нужное определено в SELECTIVITY.

На простом примере (разница не так наглядна, но все же есть):
(увеличил EXTENTSIZE до 1 млн).
SELECT TOP 1000 ... ORDER BY ID
Быстродействие: 0.250 Секунд 186722 глобальных ссылок
SELECT TOP 1000 ... ORDER BY %ID
Быстродействие: 0.248 Секунд 186722 глобальных ссылок
SELECT TOP 1000 ...
Быстродействие: 0.038 Секунд 8984 глобальных ссылок

Получающийся в выборке порядок идентичен - сортировка по ID...
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36611965
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ser_shukolesov,

по моему опыту order by id всегда получался автоматически.

Но индексов и условий экзотических не было.

Хотя не очень понимаю, почему order by id замедляет запрос в сотни тысяч раз. Какого размера получается выборка для сортировки?

Можно пример такого запроса?

Аналогично - самая обычная стандартная таблица. Результат-то один и тот же... Но медленнее...

С примером плохо.
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36611966
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Еще как вариант, если не поможет TuneTable, сделать order by tochar(ID), думаю, каше не сможет использовать индекс для выражения и пойдет по другим индексам.

Попробовал - в полтора раза медленнее, чем ORDER BY ID
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36611970
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все-таки я порекомендовал бы сделать TuneTable
Она селективности записывает в структуру хранения, так что ваши в определении не сотрутся, а будут просто игнорироваться. При желании из структуры хранения можно их вытереть.

И можно планы в студию? А то гадание на кофейной гуще.
И селективности посмотреть бы.
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36611971
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolesov,

Проблема в TOP 1000.
Без сортировки запрос обрывается на первых полученных 1000 записей в процессе выборки.
При JRDER BY ... необходимо получить сначала отсортированную последовательность всех записей, а потом оставить первые 1000 записей.
По моему, на больших массивах никак не обойдешься без замедления в случае с TOP 1000. Если только выборка сама меньше 1000, то сортировка незаметно пройдет, а на 1 000 000 уже будет заметно.
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36611973
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PtnkolesovИдентично ли "ORDER BY ID" отсутствию сортировки?

Нет и никогда не было.

kolesovВопрос: Могу ли я безболезненно убрать ORDER BY ID? Вроде бы да... Но, то-ж Каше ;)

Можете - если вам в том куске кода с запросом безразличен порядок записей - иначе смотри выше

Вы уверены? Я проверил тысячу записей - для ORDER BY ID и без него порядок записей в выборке один и тот же...

В документации "If a SELECT query does not specify an ORDER BY clause, the returned record order is not predictable."

Фича!?
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36611976
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolesovPtnkolesovИдентично ли "ORDER BY ID" отсутствию сортировки?

Нет и никогда не было.

kolesovВопрос: Могу ли я безболезненно убрать ORDER BY ID? Вроде бы да... Но, то-ж Каше ;)

Можете - если вам в том куске кода с запросом безразличен порядок записей - иначе смотри выше

Вы уверены? Я проверил тысячу записей - для ORDER BY ID и без него порядок записей в выборке один и тот же...

В документации "If a SELECT query does not specify an ORDER BY clause, the returned record order is not predictable."

Фича!?

Ptn прав, в общем случае (как и в документации сказано) сортировка записей непредсказуема.
Я ранее написал, что по моему опыту почти всегда получалась сортировка по ID, если не указана другая сортировка.
Но алгоритмы меняются от версии к версии в Каше. И я представляю, что оптимизации выборки с учетом попадающих в запрос индексов будет выбирать записи не обращая внимания на ID.
Схема запроса определит сортировку в выборке.
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36612002
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Все-таки я порекомендовал бы сделать TuneTable
Она селективности записывает в структуру хранения, так что ваши в определении не сотрутся, а будут просто игнорироваться. При желании из структуры хранения можно их вытереть.

И можно планы в студию? А то гадание на кофейной гуще.
И селективности посмотреть бы.

В SAMPLES:
Текст запроса
SELECT ID FROM Cinema.Film --ORDER BY ID
План запроса
Отосительная стоимость = 787000
Read index map Cinema.Film.TicketsSoldIndex, looping on TicketsSold and ID.
For each row:
Output the row.

Текст запроса
SELECT ID FROM Cinema.Film ORDER BY ID
План запроса
Отосительная стоимость = 2440400
Read master map Cinema.Film.IDKEY, looping on ID.
For each row:
Output the row.

Совсем странно, однако ;)
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36612006
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, примерно понятно.

1. Без ORDER BY ID Каше ищет самый "короткий" индекс.

2. В случае использования ORDER BY ID с попыткой Каше "оптимизировать" запрос нужно бороться селективностью.

Ну... или как-то так ;)
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36612012
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesovВы уверены? Я проверил тысячу записей - для ORDER BY ID и без него порядок записей в выборке один и тот же...

Уверен - Считать что без указания сортировки база возвращает записи в порядке возрастания ID записей - очень опасное но тем не менее распространенное заблуждение.

Студент А постоянно встречается со Студентом Б на автобусной остановке, даже если специально не договаривались между собой об этом. Вы уверены что эта "фича" сохраниться когда они закончат институт ?

kolesov
В документации "If a SELECT query does not specify an ORDER BY clause, the returned record order is not predictable."

Фича!?

Это не фича. Это свойства языка SQL.

kolesovSELECT TOP 1000 ... ORDER BY ID
Быстродействие: 0.250 Секунд 186722 глобальных ссылок
SELECT TOP 1000 ... ORDER BY %ID
Быстродействие: 0.248 Секунд 186722 глобальных ссылок
SELECT TOP 1000 ...
Быстродействие: 0.038 Секунд 8984 глобальных ссылок


Тут то как раз всё понятно - "виноват" TOP ибо третий запрос выполняется как только наберется 1000 записей, а первые два сначала делают полную выборку всех данных, сортируют её и только потом берут первую 1000-чу.

При построении плана зря убрали TOP
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36612021
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не очень уверен - но попробуйте на своих данных вот такой вид запроса
Код: plaintext
1.
SELECT ID,Name FROM (SELECT top  1000  ID,Name FROM Sample.Company ) ORDER BY Name
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36612022
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Ptn]Вы уверены что эта "фича" сохраниться когда они закончат институт ?[quot kolesov]

Вот-вот... Когда же разработчики ИС закончат институт наконец!? И поведение Каше станет стабильным... ;)

Шучу. Оно везде так...
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36612026
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PtnЯ не очень уверен - но попробуйте на своих данных вот такой вид запроса
Код: plaintext
1.
SELECT ID,Name FROM (SELECT top  1000  ID,Name FROM Sample.Company ) ORDER BY Name


Спасибо. Этот, и другие способы (IN, %INLIST, EXISTS, %noflatten), мы и используем для увеличения производительности запросов. Помимо селективности.

Главное принцип стал понятен. ORDER BY ID все же нужен... А как запрос вернуть к нормальным индексам - придумаю.

Спасибо еще раз.
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36612058
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В подтверждение
Код: plaintext
If a SELECT query does not specify an ORDER BY clause, the returned record order is not predictable.
можно сравнить результаты следующих запросов:
Код: plaintext
1.
2.
SELECT %ID FROM Cinema.Film 
SELECT %ID FROM %IGNOREINDICES "TicketsSoldIndex,TitleIndex" Cinema.Film 
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36612061
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit,

Очень показательно ;)
...
Рейтинг: 0 / 0
Идентично ли "ORDER BY ID" отсутствию сортировки?
    #36612118
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolesov,

Если бы поддерживалось select top 1000 ... from %IGNOREINDICES("*") ...
:) то получил бы быстро в большинстве случаев свои 1000 записей, отсортированных по ID
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Идентично ли "ORDER BY ID" отсутствию сортировки?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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