Question

Is having a primary key that auto increments on each new row necessary? for me this number is getting quite long and I'm not even using it for anything.
I can imagine that with gradual user activity on my site new rows will be added (I am only testing atm with just 2 alfa test users and already the number has auto incremented to over 100), eventually this number could reach silly proportions (example: 10029379000577352881086) and not only slow the site down (effecting user experience) but also could inevitably push my site over its quota (exceeding its allowed size (laymen's))

really is this needed?

Was it helpful?

Solution

If you have some field/column (or combination of columns) which can be a primary key, use that, why use Auto increment. There are school of thoughts which believe using a mix of both. You could search for surrogate keys and you may find this answer interesting Surrogate vs. natural/business keys

For size quota problem, practically I don't think the maximum auto increment value would cause your site to go over data limit. If it is of int type it will take 4 bytes, regardless of the value inside. For SQL server int type could contain values ranging from -2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647). Here is the link for that

OTHER TIPS

You need a way to uniquely identify each record in your table.

If you have that already -- say a user-ID or email-address -- then you don't necessarily need that auto-incrementing field.

Note: If you don't already have a unique constraint on that field, you should add one so that duplicate data cannot be entered into the table.

Warning: If you decide to get rid of it, be sure that no other tables are using it.

can't you user multiple columns to get a composite key instead of that? just a hint.

You do need a key that identifies every row. But a key doesn't have to be a number that "auto-increments" for every row. The fact that a few people seem to think incrementing numbers are always a good idea for keys is probably a consequence either of carelessness or a lack of appreciation of database fundamentals, sound design and data integrity.

primary key is not always necessary to have for a table . for your question check my answer:

when and when not primary key should use

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top