Сначала давайте посмотрим, что логически делает этот цикл.
i
будет многократно переполнен. Каждые 2 32 sup> (около 4 миллиардов) итераций цикла выходные данные будут печататься, а k будет увеличиваться.
Это логичный взгляд. Тем не менее, компиляторы и среды выполнения могут оптимизироваться, и если вы получаете больше значения каждую секунду или около того, совершенно очевидно, что такая оптимизация должна иметь место. Даже с современным предсказанием ветвлений, неправильным выполнением и т. Д. Я нахожу маловероятным, что ЦП будет обходить узкий цикл более одного раза за такт (и даже то, что я считаю маловероятным). Тот факт, что в отладчике вы никогда не увидите ничего, кроме нуля, подтверждает идею, что код оптимизируется.
Вы упоминаете, что при использовании «long» требуется больше времени, и вы видите другие значения. Если в неоптимизированном цикле использовался «длинный» счетчик, можно ожидать, что между значениями будет много десятилетий. Опять же, очевидно, что происходит оптимизация, но кажется, что оптимизатор сдается, прежде чем он полностью оптимизировал ненужные итерации.
Может использовать MERGE
в SQL Server 2008, имеет преимущество использования OUTPUT
для возврата значений DefID
, при условии, что они генерируются автоматически, например,
MERGE INTO ProductDefinition
USING (
SELECT 16, P1.Definition, P1.Description
FROM ProductDefinition AS P1
WHERE P1.ProdID = 15
) AS source (ProdID, Definition, Description)
ON 0 = 1
WHEN NOT MATCHED THEN
INSERT (ProdID, Definition, Description)
VALUES (ProdID, Definition, Description)
OUTPUT inserted.DefID, inserted.ProdID,
inserted.Definition, inserted.Description;
Если вы хотите повторить данные в одной и той же таблице, используйте следующую логику:
сначала вставьте отметку туда, куда вы хотите вставить ...
insert into [table](column1,column2)
секунду, выберите оценку, откуда вы хотите взять данные для вставки ....
select (column1/'your value',column2/'your value') from [table]
теперь установите фильтр, строки которого вы хотите дублировать
where (your condition)
, так как хотите копировать одни и те же данные для разных клиентов, я использовал этот запрос.