Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 200 update на ssd у меня пишутся друга за другом минуту - быстрее можно?  [new]
sqlmiha1
Member

Откуда:
Сообщений: 28
200 update в базе в несколько миллионов записей

BEGIN TRANSACTION;
UPDATE T SET f1 = 1, f2 = 1, f3 = 1, f4 = 1 WHERE s='test1';
UPDATE T SET f1 = 1, f2 = 1, f3 = 1, f4 = 1 WHERE s='test2';
UPDATE T SET f1 = 1, f2 = 1, f3 = 1, f4 = 1 WHERE s='test3';
.....
UPDATE T SET f1 = 1, f2 = 1, f3 = 1, f4 = 1 WHERE s='test200';
COMMIT TRANSACTION

на ssd у меня пишутся друг за другом минуту - быстрее можно? или менять базу чтобы писалось быстрее?
21 апр 14, 11:23    [15909668]     Ответить | Цитировать Сообщить модератору
 Re: 200 update на ssd у меня пишутся друга за другом минуту - быстрее можно?  [new]
Glory
Member

Откуда:
Сообщений: 104751
sqlmiha1
быстрее можно?

А ваш ssd позволяет быстрее ?
21 апр 14, 11:34    [15909738]     Ответить | Цитировать Сообщить модератору
 Re: 200 update на ssd у меня пишутся друга за другом минуту - быстрее можно?  [new]
invm
Member

Откуда: Москва
Сообщений: 9646
Индекса по "s" ведь наверняка нету?
А 200 раз сканировать таблицу "в несколько миллионов записей" на любой СУБД будет не быстро.
21 апр 14, 11:38    [15909772]     Ответить | Цитировать Сообщить модератору
 Re: 200 update на ssd у меня пишутся друга за другом минуту - быстрее можно?  [new]
почемучка000001
Guest
sqlmiha1
200 update в базе в несколько миллионов записей

BEGIN TRANSACTION;
UPDATE T SET f1 = 1, f2 = 1, f3 = 1, f4 = 1 WHERE s='test1';
UPDATE T SET f1 = 1, f2 = 1, f3 = 1, f4 = 1 WHERE s='test2';
UPDATE T SET f1 = 1, f2 = 1, f3 = 1, f4 = 1 WHERE s='test3';
.....
UPDATE T SET f1 = 1, f2 = 1, f3 = 1, f4 = 1 WHERE s='test200';
COMMIT TRANSACTION

на ssd у меня пишутся друг за другом минуту - быстрее можно? или менять базу чтобы писалось быстрее?


глянь планы выполнения и ОЖИДАНИЯ.
21 апр 14, 11:38    [15909774]     Ответить | Цитировать Сообщить модератору
 Re: 200 update на ssd у меня пишутся друга за другом минуту - быстрее можно?  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8933
sqlmiha1,

Неясно, зачем Вы одни и те же значения прописываете 200 командами.
Написать
UPDATE T SET f1 = 1, f2 = 1, f3 = 1, f4 = 1 
WHERE s in  ('test1', 'test2', ... 'test200')

не судьба?
Конечно, вместо ручного прописывания спиcка из 200 значений их лучше строить из spt_values, но для ускорения Вам и так хватит
21 апр 14, 12:26    [15910104]     Ответить | Цитировать Сообщить модератору
 Re: 200 update на ssd у меня пишутся друга за другом минуту - быстрее можно?  [new]
sqlmiha1
Member

Откуда:
Сообщений: 28
уточняю значения f1 f2 f3 f4 всегда разные для разных s
как в этом случае оптимизировать?
21 апр 14, 14:23    [15910920]     Ответить | Цитировать Сообщить модератору
 Re: 200 update на ssd у меня пишутся друга за другом минуту - быстрее можно?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37155
sqlmiha1
уточняю значения f1 f2 f3 f4 всегда разные для разных s
как в этом случае оптимизировать?
Выяснить, что является узким местом. И устранить.
21 апр 14, 14:25    [15910937]     Ответить | Цитировать Сообщить модератору
 Re: 200 update на ssd у меня пишутся друга за другом минуту - быстрее можно?  [new]
komrad
Member

Откуда:
Сообщений: 5516
sqlmiha1
уточняю значения f1 f2 f3 f4 всегда разные для разных s
как в этом случае оптимизировать?

параметризировать запросы
21 апр 14, 14:35    [15911016]     Ответить | Цитировать Сообщить модератору
 Re: 200 update на ssd у меня пишутся друга за другом минуту - быстрее можно?  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8933
sqlmiha1
уточняю значения f1 f2 f3 f4 всегда разные для разных s
как в этом случае оптимизировать?


Хранить их в табличке, соединять с основной таблицей в апдейте (одной командой).
21 апр 14, 14:52    [15911122]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить