:: Игры Разума
Re: Игры разума 2
leonid

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
PaulWist
Только не работает приведенный код
Работает, работает. Только решает другую задачу.
Ratings: 0 negative/0 positive
Re: Игры разума 2
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
leonid
PaulWist
Только не работает приведенный код
Работает, работает. Только решает другую задачу.

Леонид, если считаешь что с поставленный код справляется с задачей, я не возражаю.

PS думаю на этом можно поставить точку.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 1 раз(а). Последнее : PaulWist, 16.03.07 12:07
Ratings: 0 negative/0 positive
Re: Игры разума 2
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
Prudivus
Повторюсь:
Цитата:
Кластеризация необязательна, если речь идет о временных таблицах (или переменных-таблицах), проверено на работающей задаче.

Ты хоть код мой запускал?


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Игры разума 2
Prudivus
Автор

Сообщений: 4283
Откуда: Кишинев
Дата регистрации: 14.12.2006
Нет, Павел, не запускал. Но там все и так прозрачно: при использовании кластерного индекса происходит сортировка при вставке записей. Без кластеризации никакой неявной сортировки нет. Я же говорю о временных таблицах как результате выборки, типа:

select ...
into #temp_table
from <real_table>
order by ...

То есть когда можно явно задать сортировку результирующего курсора.
Ratings: 0 negative/0 positive
Re: Игры разума 2
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
Приведенный код весьма не разумен, побочным явлением его является перекомпиляция ХП, при встрече с инструкцией

select ...
into #temp_table
from <real_table>
order by ...

те если у тебя в ХП 10 таких вызовов то тебе обеспечино 10 перекомпиляций и соответственно тормоза при выполнении, правда это существенно заметно если сама ХП имеет приличный размер.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Игры разума 2
Prudivus
Автор

Сообщений: 4283
Откуда: Кишинев
Дата регистрации: 14.12.2006
Насчет "неразумности" весьма спорно. Да, перекомпиляция будет, но при сравнении с вариантом выборки в таблицу-переменную

declare @tmp table (...)
insert into @tmp
select ...
from <real_table>
order by ...

на относительно даже небольших объемах (сотни, тысячи записей) временные таблицы выигрывают по быстродействию, как ни странно. Но, конечно, всегда есть вариант и с переменными-таблицами, дело вкуса.
Ratings: 0 negative/0 positive
Re: Игры разума 2
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
Prudivus
Насчет "неразумности" весьма спорно. Да, перекомпиляция будет, но при сравнении с вариантом выборки в таблицу-переменную

Что-ж из этих слов можно сделать вывод, что в твоей практике не было ХП размером больше 100 строк, с использованием временных таблиц или таблеваров.

На самом деле перекомпиляция ХП весьма ресурсоемкий процесс.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Игры разума 2
Prudivus
Автор

Сообщений: 4283
Откуда: Кишинев
Дата регистрации: 14.12.2006
Цитата:
Что-ж из этих слов можно сделать вывод, что в твоей практике не было ХП размером больше 100 строк, с использованием временных таблиц или таблеваров.
Вывод довольно странный. Хотя количеством строк меряться не буду - это тот случай когда количество не переходит в качество. ;)

Там где возможно, конечно лучше использовать таблицы-переменные. Но на массовых операциях, как показывает практика, временные таблицы выигрывают. Возможно, оптимизатор строит по ним временные индексы, а по переменным - нет?
Ratings: 0 negative/0 positive
Re: Игры разума 2
Prudivus
Автор

Сообщений: 4283
Откуда: Кишинев
Дата регистрации: 14.12.2006
Для интереса поглядел на один триггер, с использованием двух временных таблиц и одной таблицы-переменной: 269 строк, при этом еще вызываются дополнительные ХП, реализующие специфическую бизнес-логику (то самое связывание, только гораздо сложнее чем было в примере). Время выполнения вполне приемлемое, в эту таблицу вводятся данные, время реакции в клиенте - порядка секунды на миллионных объемах.
Ratings: 0 negative/0 positive
Re: Игры разума 2
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
Prudivus
Цитата:
Что-ж из этих слов можно сделать вывод, что в твоей практике не было ХП размером больше 100 строк, с использованием временных таблиц или таблеваров.
Вывод довольно странный. Хотя количеством строк меряться не буду - это тот случай когда количество не переходит в качество. ;)

Без обид, просто твоё неверие говорит, что ты с этим не сталкивался, я сам совсем недавно столкнулся, когда ХП стали больше 1 тыс строк.

forum.foxclub.ru

ну или здесь

www.sql.ru


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Игры разума 2
Prudivus
Автор

Сообщений: 4283
Откуда: Кишинев
Дата регистрации: 14.12.2006
Нет, никаких обид. Без временных таблиц очень трудно обойтись. Хотя бы для того чтобы передавать данные в ХП. Скажем, есть некая ХП (на пару сотен строк), в которой делается непростой расчет, и которая может вызываться из нескольких мест (триггеров и ХП), в нее нужно передавать массивы строк. Как? Временные таблицы.

Да, знаю, что можно создать специальную (постоянную) таблицу(ы) для передачи и т.п. Но имхо - не стоит, если речь о системе где передачи массивов встречаются часто и итоговое быстродействие устраивает. По поводу перекомпиляции ХП на 1000 строк, может быть и долго, особенно если она вызывается из триггера. Как вариант - сделать декомпозицию, разбить на несколько более мелких, если возможно. Но тебе, я думаю, виднее как лучше в твоем случае.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 2 (Гостей: 2)

© 2000-2024 Fox Club 
Яндекс.Метрика