navidshaikh0702 Ответов: 2

Insert statement script почти потребляет 40 минут для выполнения


Требование состоит в том, чтобы вставить все возможные комбинации, начиная от AAAAA до ZZZZZ
то есть общее количество комбинаций равно нулю.11881376 (26*26*26*26*26)

Что я уже пробовал:

Объявите i число :=65;
НАЧАТЬ
Цикл WHILE (i<=90)
Объявите число j :=65;
НАЧАТЬ
Цикл WHILE (j<=90)
Объявите число k :=65;
НАЧАТЬ
Цикл WHILE (k<=90)
Объявите число l :=65;
НАЧАТЬ
Цикл WHILE (l<=90)
Объявите число m :=65;
НАЧАТЬ
Цикл WHILE (m<=90)
ВСТАВИТЬ В КАРТЫ.ALPHABETS_CHARCTER (АЛФАВИТЫ)
Значения(ЧР(я) || ЧР(к) || ЧР(к) || ЧР(л) || ЧР(м));
m :=m + 1;
КОНЦЕВАЯ ПЕТЛЯ;
КОНЕЦ;
l :=l + 1;
КОНЦЕВАЯ ПЕТЛЯ;
КОНЕЦ;
k :=k + 1;
КОНЦЕВАЯ ПЕТЛЯ;
КОНЕЦ;
j :=j + 1;
КОНЦЕВАЯ ПЕТЛЯ;
КОНЕЦ;
i := i + 1;
КОНЦЕВАЯ ПЕТЛЯ;
КОНЕЦ;

2 Ответов

Рейтинг:
1

Patrice T

Цитата:
Требование состоит в том, чтобы вставить все возможные комбинации, начиная от AAAAA до ZZZZZ
то есть общее количество комбинаций равно нулю.11881376 (26*26*26*26*26)

Итак, вы вставляете 11881376 записей и удивляетесь, почему это занимает много времени ?
11881376 за 40 минут означает 297 тысяч записей в минуту или 5 тысяч записей в секунду, не так уж плохо.
Ваш сценарий огромен !


Рейтинг:
1

Dave Kreskowiak

Вы запускаете 11,8 миллиона инструкций INSERT и задаетесь вопросом, почему это занимает 40 минут? В зависимости от спецификаций SQL Server, я не удивлен, что это занимает так много времени.

Похоже, что это либо конкурсная задача, которую нужно решить, какая-то другая "задача", где код должен быть завершен за небольшое количество времени, либо это домашнее задание.

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

Прочитай Комбинации и перестановки - SQLServerCentral[^]


Maciej Los

5ed!