I have a stored procedure that is working with a large amount of data. I have that data being inserted in to a temp table. The overall flow of events is something like
When you add PK on table creation - the insert check is O(Tn)
(where Tn
is "n-th triangular number", which is 1 + 2 + 3 ... + n
) because when you insert x-th row, it's checked against previously inserted "x - 1" rows
When you add PK after inserting all the values - the checker is O(n^2)
because when you insert x-th row, it's checked against all n
existing rows.
First one is obviously faster since O(Tn)
is less than O(n^2)
P.S. Example: if you insert 5 rows it is 1 + 2 + 3 + 4 + 5 = 15
operations vs 5^2 = 25
operations