Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 SORT ORDER BY & COUNT STOPKEY  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
Есть мнение, что первые 5000 строк результатов этих запросов не обязательно эквивалентны:
1:
select *
	from all_objects
	order by object_name, object_type, owner, /*whatewer*/)
2:
select *
	from (
		select *
			from all_objects
			order by object_name, object_type, owner, /*whatewer*/)
	where rownum <= 5000

А вы что думаете?
30 май 16, 15:45    [19236725]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
--Eugene--
А вы что думаете?
Я думаю что если между выполнениями ты сделаешь alter session set nls_sort то сможешь для себя открыть дивный новый мир.
30 май 16, 16:37    [19237070]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
dbms_photoshop,

не не не, при прочих равных.
просто пацанчики на районе слух пустили, что COUNT STOPKEY может произойти до SORT ORDER BY.
если честно, я в это не верю. но всё-таки
30 май 16, 16:47    [19237131]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
--Eugene--,

Бред
30 май 16, 16:50    [19237163]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
еще варианты, пожалуйста
30 май 16, 16:57    [19237205]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
123йй
Member

Откуда:
Сообщений: 1635
--Eugene--
еще варианты

а документация по select... order by чем не угодила ?
30 май 16, 17:04    [19237262]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
123йй,

разве оттуда можно явно узнать ответ на мой вопрос?
30 май 16, 17:09    [19237301]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54381
--Eugene--
dbms_photoshop,

не не не, при прочих равных.
просто пацанчики на районе слух пустили, что COUNT STOPKEY может произойти до SORT ORDER BY.
если честно, я в это не верю. но всё-таки
а тест в подтверждение не прислали?
30 май 16, 17:16    [19237349]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
andreymx,

who needs tests, when there is a theory? ©
30 май 16, 17:18    [19237369]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51767

--Eugene--
who needs tests, when there is a theory?

Ставлю на то, что эти теоретики поставили в условие rownum из внутреннего запроса.

Posted via ActualForum NNTP Server 1.5

30 май 16, 17:32    [19237473]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
--Eugene--
еще варианты, пожалуйста
При недетерминированной сортировке и side effects можно добиться разных результатов.
Под недетерминированной сортировкой понимается тот случай когда более одной строки с одинаковыми object_name, object_type, owner.
Например, секционированная таблица.
30 май 16, 17:40    [19237513]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
Теоретик
Guest
--Eugene--
Есть мнение, что первые 5000 строк результатов этих запросов не обязательно эквивалентны:
1:
select *
	from all_objects
	order by object_name, object_type, owner, /*whatewer*/)
2:
select *
	from (
		select *
			from all_objects
			order by object_name, object_type, owner, /*whatewer*/)
	where rownum <= 5000

А вы что думаете?

Я думаю, что оба запроса нерабочие и возвращают одну и туже ошибку :-)
30 май 16, 18:50    [19237867]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
Теоретик,

это все понимают и вежливо делают вид, что не заметили
30 май 16, 19:12    [19237923]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
хорошо, а правильно ли будет переместить ORDER BY таким образом? :
+ 1
with w as (
	select *
		from all_users
),
x as (
	select *
		from all_objects
),
y as (
	select x.object_name, x.object_type, x.owner,
			w.created
			/*, и другие колонки*/
		from w
			left join x
				on x.owner = w.username
			/* и куча других джоинов */),
z as ()
	select *
		from y
		order by case when :a = :b then y.created else null end
			/*, и прочие выражения, зависящие не (или не только) от y*/
)
select *
	from z
	where rownum <= 5000;
+ 2
with w as (
	select *
		from all_users
		order by case when :a = :b then created else null end
),
x as (
	select *
		from all_objects
),
y as (
	select x.object_name, x.object_type, x.owner,
			w.created
			/*, и другие колонки*/
		from w
			left join x
				on x.owner = w.username
			/* и куча других джоинов */),
z as (
	select *
		from y
		order /*прочие выражения, зависящие не (или не только) от y*/
)
select *
	from z
	where rownum <= 5000;

Идея в том чтобы сделать сортировку по ALL_USERS.CREATED быстрее.
Или же сортировка во вложенных подзапросах не гарантируется, если это не TOP-N ?
30 май 16, 20:07    [19238022]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
Конечно же, камент должен быть такой:
...
/*, и прочие выражения, зависящие не (или не только) от w*/
...
30 май 16, 20:09    [19238031]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
--Eugene--,

В варианте 2 может исчезнуть сортировка по created. Читай про order by elimination
30 май 16, 20:23    [19238050]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
--Eugene--,

То есть даже order by elimination не при чем, просто если вторая сортировка не включает created первым, то тупо сортировка первая бесполезна
30 май 16, 20:25    [19238058]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10042
xtender
Бред


Ну теорeтически не такой уж бред если результат inline view будет мaтериaлизирован и зaтем считан параллельно. Можно ли "убедить" оптимайзер на такой плaн это уже другой вопрос. Лично я в принципе не использую inline view с order by а предпочитаю аналитику.

SY.
30 май 16, 21:45    [19238330]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
xtender-
Guest
SY,

Я говорил про
автор
просто пацанчики на районе слух пустили, что COUNT STOPKEY может произойти до SORT ORDER BY.
30 май 16, 22:42    [19238480]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
SY
если результат inline view будет мaтериaлизирован и зaтем считан параллельно..
не думаю, что у нас есть такая цель..
31 май 16, 01:40    [19238653]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
xtender
если вторая сортировка не включает created первым, то тупо сортировка первая бесполезна
тогда какой смысл в SORT ORDER BY по CREATED на вью в плане?
И тут даже не о смысле речь, а о самом факте его наличия.
31 май 16, 01:44    [19238655]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
--Eugene--
тогда какой смысл в SORT ORDER BY по CREATED на вью в плане?
CBO умеет его убирать, но не всегда (имхо существенно реже в последних версиях, в связи с многочисленными багами)
31 май 16, 02:48    [19238681]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
вобщем, у меня следующая проблема
есть запрос, который возвращает очень много строк (но следует учесть, что фетчатся из них только первые N, небольшое фиксированное число)
в этом запросе используется партиционированная таблица
и сортировка (в которой, собственно, фигурирует только та самая таблица), которая губит всю прелесть пертишенинга, поскольку из-за нетривиальности выражений сортировки (наличие CASE WHEN .. THEN NULL и проч) просматриваются все партиции вместо парочки тех, которые бы как раз дали те самые N строк..

что посоветуете?
31 май 16, 15:15    [19241513]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
123йй
Member

Откуда:
Сообщений: 1635
--Eugene--
просматриваются все партиции вместо парочки тех, которые бы как раз дали те самые N строк..

SELECT * FROM sales PARTITION (nov98) 
31 май 16, 15:20    [19241536]     Ответить | Цитировать Сообщить модератору
 Re: SORT ORDER BY & COUNT STOPKEY  [new]
booby
Member

Откуда:
Сообщений: 2254
--Eugene--
...

что посоветуете?

попить водички, подышать свежим воздухом и перестать использовать слова, смысла которых Вы не понимаете,
даже если те слова чудятся вам совершенно "красивыми".
31 май 16, 15:21    [19241545]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Oracle Ответить