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

IDS10 UC3 R1
SDK 2.90
...
Рейтинг: 0 / 0
15.02.2008, 20:37
    #35136385
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок данных без order by :)
Петров Андрей Что влияет на порядок строк в запросе без сортировки? :)
Могут влиять разные факторы:
- физический порядок строк в таблице(-ах)
- размер таблицы (из маленькой таблицы почти гарантированно будет физический порядок строк при скане)
- наличие страниц таблицы в буфере (особенно для больших таблиц)
- читается таблица по индексу или сканируется
- если таблиц несколько, то зависит, естественно, от плана ортимизатора - что он выбирает за основную таблицу (возможно, сканирование), а какие будет дергать только по необходимости (по индексу)
- есть ли в запросе группировки
и т.п.
...
Рейтинг: 0 / 0
15.02.2008, 20:53
    #35136413
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок данных без order by :)
Запрос
Код: 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
15.02.2008, 22:32
    #35136537
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок данных без order by :)
Ну и...
Вопрос то теперь в чем ?
Я, кажется, ответил.
...
Рейтинг: 0 / 0
16.02.2008, 21:18
    #35137164
onstat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок данных без order by :)
vasilis
и т.п.

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


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

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


А нету ссылки на документ чтобы ткнуть лицом менеджера?
...
Рейтинг: 0 / 0
18.02.2008, 13:02
    #35138867
xz321
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок данных без order by :)
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
18.02.2008, 13:12
    #35138897
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок данных без order by :)
Петров Андрей 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
20.02.2008, 18:42
    #35145557
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок данных без order by :)
Петров АндрейТак вот вопрос. Что влияет на порядок строк в запросе без сортировки? :) Про стандарты уже выше написали. От себя добавлю, лишь, что в правильно сформулированном вопросе уже содержится ответ. В вашем случае формулировка правильная. Ответ (в общем виде) звучит так: "Все, что угодно!"
Ну, а с точки зрения теории: результат запроса - это множество (кортеж). Множество неупорядочено по определению.
...
Рейтинг: 0 / 0
21.02.2008, 09:48
    #35146316
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок данных без order by :)
Евгений ФадеевНу, а с точки зрения теории: результат запроса - это множество (кортеж). Множество неупорядочено по определению.вообще-то множество кортежей (представление).
И наверно: результат запроса -- множество строк, а результат реляционного выражения -- множество кортежей.
...
Рейтинг: 0 / 0
21.02.2008, 10:49
    #35146529
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок данных без order by :)
Журавлев Денис Евгений ФадеевНу, а с точки зрения теории: результат запроса - это множество (кортеж). Множество неупорядочено по определению.вообще-то множество кортежей (представление).
И наверно: результат запроса -- множество строк, а результат реляционного выражения -- множество кортежей.Ага. Что-то я в конце дня, вчера, был не быстр умом :)
...
Рейтинг: 0 / 0
21.02.2008, 19:52
    #35148958
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок данных без order by :)
автор в правильно сформулированном вопросе уже содержится ответ. В вашем случае формулировка правильная.

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

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


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