Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
Серега MS SQL
Member

Откуда: Сибирь
Сообщений: 23
что и почему будет быстрее работать:

1) создаем временную таблицу, начитываем туда данные (insert), создаем индекс по временной таблице
или
2) создаем временную таблицу, создаем индекс по временной таблице, начитываем туда данные (insert)

или разницы никакой нет? я тестировал на табличке, содержащей всего 500 000 записей, и разницы никакой не увидел (индекс был по трем полям).
4 окт 13, 14:16    [14924163]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35384
Блог
первое быстрее
4 окт 13, 14:36    [14924333]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
Серега MS SQL
Member

Откуда: Сибирь
Сообщений: 23
Критик,

экспериментально установили это? или ответили из каких-то своих личных соображений? статейка есть где-нибудь по этому поводу?
4 окт 13, 14:40    [14924359]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
Glory
Member

Откуда:
Сообщений: 104751
Серега MS SQL
я тестировал на табличке, содержащей всего 500 000 записей, и разницы никакой не увидел

А что и как вы измеряли ?
4 окт 13, 14:57    [14924441]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
Серега MS SQL
Member

Откуда: Сибирь
Сообщений: 23
Glory,

замерял время выполнение скриптов. сейчас попробовал на 5 000 000 записей и результат тот же самый: никакой разницы не вижу, в какой момент создавать индексы. прогонял вот такие скрипты:
4 окт 13, 15:10    [14924519]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
Серега MS SQL
Member

Откуда: Сибирь
Сообщений: 23
Glory,

1) создание индекса после insert

CREATE TABLE #AG_T
(
AG_NUM INT,
AG_STR NVARCHAR(1),
AG_ORG_FK INT,
AG_ORG_SIMPLE_INT INT,
AG_ORG_INDEX INT
)

DECLARE @VID_ORG INT;
DECLARE @counter INT = 1;
DECLARE @AG_NUM INT = 0;
DECLARE @ALPHABET NVARCHAR(10) = N'АБВГДЕЁЖЗИ';

WHILE @COUNTER <= 5000000
BEGIN
SET @VID_ORG = CAST(RAND()*5 + 1 AS INT);
SET @AG_NUM = CAST(RAND()*1000000 + 1 AS INT);
INSERT INTO #AG_T(AG_NUM, AG_STR, AG_ORG_FK, AG_ORG_SIMPLE_INT, AG_ORG_INDEX)
VALUES (@AG_NUM, SUBSTRING(@ALPHABET, CAST(RAND()*LEN(@ALPHABET) + 1 AS INT),1),@VID_ORG,@VID_ORG,@VID_ORG);
SET @COUNTER = @COUNTER + 1;
END

CREATE NONCLUSTERED INDEX [NonClusteredIndex-XXX] ON #AG_T
(
AG_NUM ASC,
AG_STR ASC,
AG_ORG_FK ASC
);

DROP INDEX [NonClusteredIndex-XXX] ON #AG_T;

DROP TABLE #AG_T;

2) создание индекса до insert
4 окт 13, 15:11    [14924528]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
Серега MS SQL
Member

Откуда: Сибирь
Сообщений: 23
Glory,

2) создание индекса до insert

CREATE TABLE #AG_T
(
AG_NUM INT,
AG_STR NVARCHAR(1),
AG_ORG_FK INT,
AG_ORG_SIMPLE_INT INT,
AG_ORG_INDEX INT
);

CREATE NONCLUSTERED INDEX [NonClusteredIndex-XXX] ON #AG_T
(
AG_NUM ASC,
AG_STR ASC,
AG_ORG_FK ASC
);

DECLARE @VID_ORG INT;
DECLARE @counter INT = 1;
DECLARE @AG_NUM INT = 0;
DECLARE @ALPHABET NVARCHAR(10) = N'АБВГДЕЁЖЗИ';

WHILE @COUNTER <= 5000000
BEGIN
SET @VID_ORG = CAST(RAND()*5 + 1 AS INT);
SET @AG_NUM = CAST(RAND()*1000000 + 1 AS INT);
INSERT INTO #AG_T(AG_NUM, AG_STR, AG_ORG_FK, AG_ORG_SIMPLE_INT, AG_ORG_INDEX)
VALUES (@AG_NUM, SUBSTRING(@ALPHABET, CAST(RAND()*LEN(@ALPHABET) + 1 AS INT),1),@VID_ORG,@VID_ORG,@VID_ORG);
SET @COUNTER = @COUNTER + 1;
END

DROP INDEX [NonClusteredIndex-XXX] ON #AG_T;

DROP TABLE #AG_T;
4 окт 13, 15:12    [14924535]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
Glory
Member

Откуда:
Сообщений: 104751
Серега MS SQL
замерял время выполнение скриптов

И как вы поняли, сколько времени на что расходуется ?
4 окт 13, 15:15    [14924559]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
Серега MS SQL
Member

Откуда: Сибирь
Сообщений: 23
Glory
Серега MS SQL
замерял время выполнение скриптов

И как вы поняли, сколько времени на что расходуется ?


так меня интересует общее время. первого без второго не бывает
4 окт 13, 15:17    [14924573]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
Glory
Member

Откуда:
Сообщений: 104751
Серега MS SQL
так меня интересует общее время. первого без второго не бывает

Т.е. количество чтений и записи на диск вас не интересует ?
4 окт 13, 15:18    [14924592]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
Серега MS SQL
Member

Откуда: Сибирь
Сообщений: 23
Glory
Серега MS SQL
так меня интересует общее время. первого без второго не бывает

Т.е. количество чтений и записи на диск вас не интересует ?

а кол-во чтений и записей на диск будет разным? в чью сторону и почему? ну, и все-таки интересует время
4 окт 13, 15:41    [14924777]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
Glory
Member

Откуда:
Сообщений: 104751
Серега MS SQL
а кол-во чтений и записей на диск будет разным?

Вы знаете, что такое расщипление заполненной страницы индекса ?
4 окт 13, 15:45    [14924818]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
Серега MS SQL
Member

Откуда: Сибирь
Сообщений: 23
Glory
Серега MS SQL
а кол-во чтений и записей на диск будет разным?

Вы знаете, что такое расщипление заполненной страницы индекса ?

нет
4 окт 13, 15:49    [14924860]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
Серега MS SQL
Member

Откуда: Сибирь
Сообщений: 23
все что ли??? я думал, что Вы мне расскажите про «расщепление заполненной страницы индекса» или скинете какую-нибудь ссылку почитать… никто больше на мой вопрос не в состоянии ответить и объяснить, почему так, а не иначе?
4 окт 13, 16:05    [14925009]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
Серега MS SQL
Glory
пропущено...

Вы знаете, что такое расщипление заполненной страницы индекса ?

нет

https://www.sql.ru/articles/mssql/03013101indexes.shtml#16_5
4 окт 13, 16:06    [14925016]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
Glory
Member

Откуда:
Сообщений: 104751
Серега MS SQL
я думал, что Вы мне расскажите про «расщепление заполненной страницы индекса»

Конечно. Вы пока за пивом сходите. И устравивайтесь поудобнее. И не вздумайте сами что-то делать
4 окт 13, 16:07    [14925025]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34705
Критик
первое быстрее


Это имеет значение когда существенно большой объем данных, типа от десятков тысяч записей.
4 окт 13, 16:24    [14925155]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34705
Как так он там мерил, не понятно....
Должно быть наоборот...
На малых объемах нет разницы, на больших есть.
4 окт 13, 16:28    [14925202]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
Серега MS SQL
Member

Откуда: Сибирь
Сообщений: 23
MasterZiv
Критик
первое быстрее


Это имеет значение когда существенно большой объем данных, типа от десятков тысяч записей.


я на 5 000 000 разницы не заметил по времени. осталось выяснить, что там с операциями ввода-вывода
4 окт 13, 16:30    [14925215]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
MasterZiv
Как так он там мерил, не понятно....
Должно быть наоборот...
На малых объемах нет разницы, на больших есть.

по моему секундомером :) по тому что к знаниям о том что есть шаблон duration в profiler ещё прийти нужно DX
4 окт 13, 16:31    [14925219]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
Серега MS SQL
Member

Откуда: Сибирь
Сообщений: 23
какой толк от гуру, если он дохрена знает, но никому ничего не говорит.... а еще лучше: специально пишет кривой код, чтобы никто не догадался, что он умный =)
4 окт 13, 16:35    [14925241]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
AlexBra
Member

Откуда:
Сообщений: 67
Серега MS SQL
какой толк от гуру, если он дохрена знает, но никому ничего не говорит....


а вы попробуйте хотя бы месяц отвечать каждый день, на одни и те же вопросы, людям, которые ленятся не то что простейший запрос в поисковике забить, а просто внятно сформулировать свой вопрос
4 окт 13, 16:39    [14925272]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
Серега MS SQL
Member

Откуда: Сибирь
Сообщений: 23
AlexBra
Серега MS SQL
какой толк от гуру, если он дохрена знает, но никому ничего не говорит....


а вы попробуйте хотя бы месяц отвечать каждый день, на одни и те же вопросы, людям, которые ленятся не то что простейший запрос в поисковике забить, а просто внятно сформулировать свой вопрос


у Вас 13 сообщений.......
4 окт 13, 16:49    [14925313]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
vi0
Member

Откуда:
Сообщений: 296
Серега MS SQL,
товарищи выше предлагают вам, помимо прочего, использовать профайлер, чтобы посмотреть длительность выполнения запроса и количество чтений и записи
4 окт 13, 17:03    [14925409]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по использованию индексов на временных таблицах (оптимизация производительности)  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
вообще никакой? странно. у меня на ваших скриптах выигрыш при создании индексов после вставки совершенно стабильный. небольшой ~15-20%, но есть. попробуйте несколько индексов создать - эффект заметнее может получиться.
4 окт 13, 17:04    [14925417]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить