Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Временные таблицы и переменные-таблицы / 9 сообщений из 9, страница 1 из 1
16.05.2001, 14:02
    #32005728
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы и переменные-таблицы
Решил я свой тест для серверов по перебору "счасливых билетиков" попробовать исправить с временных таблиц на таблицы-переменные. И что меня удивило - таблицы-переменные работают медленнее! Не намного, где-то на 20-30%, но медленнее. Это интересно у всех так или только у меня?


create table #t(i int)

insert #t select 1
insert #t select 2
insert #t select 3
insert #t select 4
insert #t select 5
insert #t select 6
insert #t select 7
insert #t select 8
insert #t select 9
insert #t select 0

set nocount on

declare @t table(i int)

insert @t select 1
insert @t select 2
insert @t select 3
insert @t select 4
insert @t select 5
insert @t select 6
insert @t select 7
insert @t select 8
insert @t select 9
insert @t select 0


declare @d datetime
select @d=getdate()
select count(*) from #t t1, #t t2,#t t3,#t t4,#t t5,#t t6
where t1.i+t2.i+t3.i=t4.i+t5.i+t6.i
select datediff(ms,@d,getdate()) tmp


select @d=getdate()
select count(*) from @t t1, @t t2,@t t3,@t t4,@t t5,@t t6
where t1.i+t2.i+t3.i=t4.i+t5.i+t6.i
select datediff(ms,@d,getdate()) per
...
Рейтинг: 0 / 0
16.05.2001, 14:23
    #32005730
AnKa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы и переменные-таблицы
А можно поинтересоваться, в чем специфическое применение таблиц-переменных. Проще говоря, на кой они вообще нужны, что позволяють сделать?
...
Рейтинг: 0 / 0
16.05.2001, 14:26
    #32005731
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы и переменные-таблицы
А у меня быстрее...
...
Рейтинг: 0 / 0
16.05.2001, 16:29
    #32005745
AnS1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы и переменные-таблицы
и у меня быстрее
первый раз
tmp
-----------
2030
-----------
per
-----------
1750

потом

tmp
-----------
1796
per
-----------
1733
...
Рейтинг: 0 / 0
16.05.2001, 17:21
    #32005753
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы и переменные-таблицы
А у меня где-то 3700 на 4500. На более медленном сервере получается вообще 6000 на 10000
Вот такая вот загогулина
...
Рейтинг: 0 / 0
16.05.2001, 17:30
    #32005755
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы и переменные-таблицы
2AnKa

Внутри функции нельзя использовать временные таблицы, а таблицы-переменные можно. К тому же последние по идее распологаются в памяти и должны работать быстрее. Живут они только во время жизни пакета и их не надо drop-ать(но зато и не посмотреть содержимое после выполнения запоса). Собственно и вся разница.
Я хотел везде заменить временные таблицы на таблицы-переменные, но теперь растерялси.
...
Рейтинг: 0 / 0
16.05.2001, 17:40
    #32005756
AnKa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы и переменные-таблицы
SergSuper:
Спасибо, к сожалению, мне этого не понять - я с 7.0 работаю.
...
Рейтинг: 0 / 0
16.05.2001, 22:52
    #32005763
Дед Маздай
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы и переменные-таблицы
Действительно удивительно. В моих экспериментах получается, что для вот таких детских примеров переменные всегда оказываются быстрее таблиц. Даже на сравнительно больших объемах insertы в переменные работают быстрее, чем во временные таблицы (лишь бы памяти хватало). Я не берусь советовать, что лучше, п.ч. все хорошо в свое время. Напр., table variables не вызывают перекомпиляции хранимых процедур (или, если говорить аккуратно, вызывают в меньшем числе случаев), т.к. при их создании / удалении в сист.каталоги ничего не пишется, операции над ними не фиксируются в логе и т.д. С другой стороны, над ними нельзя создавать индексы / статистику, поэтому, если число записей велико, то оптимизатору все-таки приятней работать с врем.табл.
...
Рейтинг: 0 / 0
22.05.2001, 17:28
    #32006034
Временные таблицы и переменные-таблицы
У меня таблицы-переменные работают медленнo.

Чтобы узнать в чем дело, сделал такой тест.
п.1. Создал функцию, возвращающую таблицу-результат из одного столбца
CREATE FUNCTION FAE (@BALANCE INTEGER, @SCHET VARCHAR(, @END_DATE DATETIME, @KOD_DK BIGINT, @KOD_MATER BIGINT)
RETURNS @RESULT TABLE (RESULT MONEY)
AS
BEGIN
INSERT INTO @RESULT SELECT DEBET-KREDIT FROM GET_SCHET_REST(@BALANCE, @SCHET, @END_DATE, @KOD_DK, @KOD_MATER, 1);
RETURN;
END

п.2. Создал функцию, возвращающую скалярный результат.
CREATE FUNCTION FAE1 (@BALANCE INTEGER, @SCHET VARCHAR(, @END_DATE DATETIME, @KOD_DK BIGINT, @KOD_MATER BIGINT)
RETURNS MONEY
AS
BEGIN
DECLARE @RESULT MONEY;
SELECT @RESULT = DEBET-KREDIT FROM GET_SCHET_REST(@BALANCE, @SCHET, @END_DATE, @KOD_DK, @KOD_MATER, 1);
RETURN @RESULT;
END

Время вызова 10000 раз п.1 намного (5-6) больше п.2.
И проц загружало на 100% п.1, и 30-90% п.2.
Странно, наверно не очень-то отлизал MS работу с новым
(безусловно инновационным и рульным) типом данных.
Где-то на уровне ядра тормозит при работе с переменными-таблицами
(толи при создании, толи при манипуляции....)

Может поправят в SP1.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Временные таблицы и переменные-таблицы / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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