Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > выборка данных в нескольких потоков


Автор: sergey_85 13.3.2012, 11:29
Всем привет!

Хочу посоветоваться, какой алгоритм применить в данной ситуации.

Есть таблица с данными для отправки (смс). Есть (будет) программа, которая в несколько потоков делает выборку и отправляет данные. Меняются статусы (готов к отправке, отпр., получен и т.п.)
Как сделать так, чтобы select в разных потоках не давал одинаковые данные (не было повторов)?


Заранее спс!

Автор: Akina 13.3.2012, 12:05
Цитата(sergey_85 @  13.3.2012,  12:29 Найти цитируемый пост)
Как сделать так, чтобы select в разных потоках не давали одинаковые данные (не было повторов)?

Вероятно, выполнять разные запросы. Например, с различными условиями отбора.

Автор: Zloxa 13.3.2012, 12:47
Цитата(Akina @  13.3.2012,  13:05 Найти цитируемый пост)
Например, с различными условиями отбора. 

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

Наткнулся вот на http://msdn.microsoft.com/ru-ru/library/ms175126(v=sql.100).aspx. Ее множ былобы тоже попробовать зазюзать, но чем-то мне претит этот вариант.

Автор: Akina 13.3.2012, 12:57
Цитата(Zloxa @  13.3.2012,  13:47 Найти цитируемый пост)
Наткнулся вот на NTILE. Ее множ былобы тоже попробовать зазюзать

А что это даст? ведь в каждом потоке деление на группы может быть совершенно непохожим на деление в другом потоке - мало ли что там произошло меж запросов...

Автор: Zloxa 13.3.2012, 13:03
Akina, ты прав smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)