powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Порядок данных без order by :)
12 сообщений из 12, страница 1 из 1
Порядок данных без order by :)
    #35136333
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понимаю что вопрос глупейший но он исходит от наших менеджеров. Ситуация такая что мы тестируем перенос базы с одной платформы на другую. Для этого генерируем некие отчеты которые возвращают данные в разном порядке. Естественно это происходит из-за того что в отчете (запросе) нет сортировки. Так вот вопрос. Что влияет на порядок строк в запросе без сортировки? :)
Самое смешное в этой истории то что менеджеры заменеджерили уже request support поддержке Informix-а :) Те попросили выгрузку которую мне не можем им послать потому что там много чего интересного :) Помогите разрешить делему...

IDS10 UC3 R1
SDK 2.90
...
Рейтинг: 0 / 0
Порядок данных без order by :)
    #35136385
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петров Андрей Что влияет на порядок строк в запросе без сортировки? :)
Могут влиять разные факторы:
- физический порядок строк в таблице(-ах)
- размер таблицы (из маленькой таблицы почти гарантированно будет физический порядок строк при скане)
- наличие страниц таблицы в буфере (особенно для больших таблиц)
- читается таблица по индексу или сканируется
- если таблиц несколько, то зависит, естественно, от плана ортимизатора - что он выбирает за основную таблицу (возможно, сканирование), а какие будет дергать только по необходимости (по индексу)
- есть ли в запросе группировки
и т.п.
...
Рейтинг: 0 / 0
Порядок данных без order by :)
    #35136413
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос
Код: plaintext
1.
2.
3.
 Select t.cAccSerno, t.i051_cur_bill, Sum(t.Amount), Count(*)
 From cTransactions t
 Where t.Orig_Msg_Type In ('CRSTL', 'DBSTL')
 Group By  1 , 2 

{+explain}
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
QUERY:
------
Select {+explain} t.cAccSerno, t.i051_cur_bill, Sum(t.Amount), Count(*)
 From cTransactions t
 Where t.Orig_Msg_Type In ('CRSTL', 'DBSTL')
 Group By  1 , 2 

DIRECTIVES FOLLOWED: 
EXPLAIN 
DIRECTIVES NOT FOLLOWED: 

Estimated Cost:  71400 
Estimated # of Rows Returned:  17 
Temporary Files Required For: Group By

   1 ) informix.t: SEQUENTIAL SCAN  (Serial, fragments: ALL)

        Filters: informix.t.orig_msg_type IN ('CRSTL' , 'DBSTL' )

Индексы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create index "cap".ctrxns03 on "cap".ctransactions (batchserno) 
    using btree ;
create index "cap".ctrxns04 on "cap".ctransactions (postdate) 
    using btree ;
create index "cap".ctrxns05 on "cap".ctransactions (posttimestamp) 
    using btree ;
create index "cap".ctrxns06 on "cap".ctransactions (stgeneral) 
    using btree ;
create index "cap".ctrxnsi01 on "cap".ctransactions (caccserno) 
    using btree ;
create index "cap".ctrxnsi02 on "cap".ctransactions (cardserno) 
    using btree ;
create unique index "cap".ctrxnsui01 on "cap".ctransactions (serno) 
    using btree ;
alter table "cap".ctransactions add constraint primary key (serno) 
    constraint "cap".ctrxnspk  
...
Рейтинг: 0 / 0
Порядок данных без order by :)
    #35136537
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и...
Вопрос то теперь в чем ?
Я, кажется, ответил.
...
Рейтинг: 0 / 0
Порядок данных без order by :)
    #35137164
onstat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilis
и т.п.

+ фрагментация таблицы, (паралельное или последовательное сканирование фрагментов).


2 Петров Андрей

Гарантию сортировки может дать только order by, стандарт SQL так говорит.
Вы можете 1000 раз тестировать без order by все будет так, как вам нужно,
а на 1001 раз сортировка будет совсем другой.
...
Рейтинг: 0 / 0
Порядок данных без order by :)
    #35138735
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstatГарантию сортировки может дать только order by, стандарт SQL так говорит.


А нету ссылки на документ чтобы ткнуть лицом менеджера?
...
Рейтинг: 0 / 0
Порядок данных без order by :)
    #35138867
xz321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Wiki

wiki
The ORDER BY clause is used to identify which columns are used
to sort the resulting data, and in which order they should be sorted
(options are ascending or descending). The order of rows returned by an
SQL query is never guaranteed unless an ORDER BY clause is specified.


Стандарт 1999
Стандарт 1999-Concepts page 71

A cursor in the open state identifies a table, an ordering of the rows of that table, and a position
relative to that ordering. If the <declare cursor> does not contain an <order by clause>, or contains
an <order by clause> that does not specify the order of the rows completely, then the rows of the
table have an order that is defined only to the extent that the <order by clause> specifies an order
and is otherwise implementation-dependent.
...
Рейтинг: 0 / 0
Порядок данных без order by :)
    #35138897
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петров Андрей onstatГарантию сортировки может дать только order by, стандарт SQL так говорит.


А нету ссылки на документ чтобы ткнуть лицом менеджера?


92 стандарт где то валялся, сейчас не могу найти,

вот что wikipedia говорит

wiki
The ORDER BY clause is used to identify which columns are used to sort the resulting data, and in which order they should be sorted (options are ascending or descending). The order of rows returned by an SQL query is never guaranteed unless an ORDER BY clause is specified.


Думаю ей можно доверять.
...
Рейтинг: 0 / 0
Порядок данных без order by :)
    #35145557
Фотография Евгений Фадеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петров АндрейТак вот вопрос. Что влияет на порядок строк в запросе без сортировки? :) Про стандарты уже выше написали. От себя добавлю, лишь, что в правильно сформулированном вопросе уже содержится ответ. В вашем случае формулировка правильная. Ответ (в общем виде) звучит так: "Все, что угодно!"
Ну, а с точки зрения теории: результат запроса - это множество (кортеж). Множество неупорядочено по определению.
...
Рейтинг: 0 / 0
Порядок данных без order by :)
    #35146316
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений ФадеевНу, а с точки зрения теории: результат запроса - это множество (кортеж). Множество неупорядочено по определению.вообще-то множество кортежей (представление).
И наверно: результат запроса -- множество строк, а результат реляционного выражения -- множество кортежей.
...
Рейтинг: 0 / 0
Порядок данных без order by :)
    #35146529
Фотография Евгений Фадеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денис Евгений ФадеевНу, а с точки зрения теории: результат запроса - это множество (кортеж). Множество неупорядочено по определению.вообще-то множество кортежей (представление).
И наверно: результат запроса -- множество строк, а результат реляционного выражения -- множество кортежей.Ага. Что-то я в конце дня, вчера, был не быстр умом :)
...
Рейтинг: 0 / 0
Порядок данных без order by :)
    #35148958
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор в правильно сформулированном вопросе уже содержится ответ. В вашем случае формулировка правильная.

Скажем так ответ то я и сам знал :-) Он очевиден но мне хотелось получить линк на документ... Мне просто нужно "доказать" и моего слован е достаточно к сожалению.

Тему можно закрыть.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Порядок данных без order by :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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