+7 (495) 229-0436   shopadmin@itshop.ru 119334, г. Москва, ул. Бардина, д. 4, корп. 3
 
 
Вход
 
 
Каталог
 
 
Подписка на новости
Новости ITShop
Windows 7 и Office: Новости и советы
Обучение и сертификация Microsoft
Вопросы и ответы по MSSQLServer
Delphi - проблемы и решения
Adobe Photoshop: алхимия дизайна
 
Ваш отзыв
Оцените качество магазина ITShop.ru на Яндекс.Маркете. Если вам нравится наш магазин - скажите об этом Google!
 
 
Способы оплаты
 
Курс расчета
 
 1 у.е. = 91.78 руб.
 
 Цены показывать:
 
 
 
 
  
Новости, статьи, акции
 

MS SQL 2008, заметки на полях. Очень много случайных чисел

25.10.2011 16:35

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

 Всех кого заинтересовала тема, добро пожаловать под кат...

Задачка: на MS SQL 2008, добавить в таблицу 10000000 (десять миллионов) случайных простых чисел от 1 до 100 000. И хотелось бы сделать это как можно быстрее.
 В простоте задачи, кроется большое поле для творчества.

Решение 1.
 Самый простой способ: организовать цикл и добавлять случайное число в таблицу на каждой итерации.
 Решение не оригинально, простое и … очень долгое, действительно очень долгое…

 
На моей машине (CPU: AMD Phenom II X2 550/RAM: 8Gb/HDD: WD5000AAKS/MS SQL2008R2/Win7x64), когда время выполнения превысило 25 минут запрос пришлось прервать.

Решение 2.
 Самое слабое место в предыдущим решении - количество итераций равно количеству добавляемых строк.

 Немного поразмыслив и полистав google находим интересную таблицу master..spt_values (не иссякаем MS SQL как атом).

 Перепишем запрос.
 Будем вставлять не по одной записи, а по 2000 за раз.
 Решение не сильно отличается от предыдущего, но получаем огромное увеличение производительности.

 
У меня на запрос ушло 48 секунд.
 (Если предположить что наше решение в 2000 раз стало быстрее, но предыдущее выполнялось бы более 26 часов).
 

Решение 3.
 Можно ли еще увеличить производительность?
 Посмотрим на скрипт, WHILE.
 Чтобы от него избавиться, нам нужно таблица содержащая как можно большее количество чисел - в идеале равное 10000000.

 Роем google - "CROSS JOIN" и "WITH".

 Нам понадобиться таблица простых чисел:

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

Запрос выполнился за менее чем 34 секунды.

Какое решение выбрать?
 Конечно не используем решение в лоб. То есть решение 1, можно спокойно отдать истории "как не надо делать".

 Разница между решением 2 и решением 3 не так очевидна. Простота против скорости. Какое из них использовать - зависит от конкретной ситуации и что будет проще поддерживать и расширять в будущем.

 

Ссылки по теме

  
Помощь
Задать вопрос
 программы
 обучение
 экзамены
 компьютеры
Бесплатный звонок
ICQ-консультанты
Skype-консультанты

Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 
Бестселлеры
Курсы обучения "Atlassian JIRA - система управления проектами и задачами на предприятии"
Microsoft Windows 10 Профессиональная 32-bit/64-bit. Все языки. Электронный ключ
Microsoft Office для Дома и Учебы 2019. Все языки. Электронный ключ
Курс "Oracle. Программирование на SQL и PL/SQL"
Курс "Основы TOGAF® 9"
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год. Электронный ключ
Курс "Нотация BPMN 2.0. Ее использование для моделирования бизнес-процессов и их регламентации"
 

О нас
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.

На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям.

Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе.

В нашем магазине вы можете приобрести лицензионное ПО выбрав необходимое из широкого спектра и ассортимента по самым доступным ценам. Наши менеджеры любезно помогут определиться с выбором ПО, которое необходимо именно вам. Также мы проводим учебные курсы. Мы приглашаем к сотрудничеству учебные центры, организаторов семинаров и бизнес-тренингов, преподавателей. Сфера сотрудничества - продвижение бизнес-тренингов и курсов обучения по информационным технологиям.



 

О нас

 
Главная
Каталог
Новинки
Акции
Вакансии
 

Помощь

 
Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 

Способы оплаты

 

Проекты Interface Ltd.

 
Interface.ru   ITShop.ru   Interface.ru/training   Olap.ru   ITnews.ru  
 

119334, г. Москва, ул. Бардина, д. 4, корп. 3
+7 (495) 229-0436   shopadmin@itshop.ru
Проверить аттестат
© ООО "Interface Ltd."
Продаем программное обеспечение с 1990 года