java - Questions about the primary key of the table
过去多啦不再A梦
过去多啦不再A梦 2017-05-17 09:58:34
0
4
628

Most primary keys should only be integers (auto-incrementing) or system-generated unique codes (such as UUID); I would like to ask what are the pros and cons of each of these two, and hope to talk about actual experience.

过去多啦不再A梦
过去多啦不再A梦

reply all(4)
習慣沉默

Auto-incrementing ID saves storage space, and the primary key index does not have the problem of insertion and reordering. The disadvantage is that the amount of data is limited, and a maximum of 2^63 records can be stored.
uuid is generally a string, which consumes more storage space than integer, and requires index reordering during insertion. In principle, there is no upper limit on the quantity.

Ty80

Integer type (mysql’s index is saved in the form of a file, so the integer type must be smaller than UUID), and because it is an integer type, the index efficiency must be higher than UUID, but because it is automatically incremented, mysql will When inserting data, the table must be locked, which causes a large overhead on the MySQL server under a large amount of concurrency. And UUID is better than integer auto-increment in handling concurrency

淡淡烟草味

uuid supports sub-library

習慣沉默

When the field is the primary key, the integer type saves space than the string type (you should remember that int only requires 4 bytes, and char has one byte per character)
When the field is not the primary key, in addition to saving space, the integer type saves more space than the string type The type is much faster, and it grows geometrically according to the character length

For those who pursue perfection, data such as IP addresses are also stored in the database using integers (IP address strings and integers have a fixed algorithm).

For example; if the value of a field is 1234567890 and there is no primary key
When doing sql query where id >= '1234567890'
int type only needs to be compared once
char type needs to be compared 10 times, each character Everyone needs to participate in the comparison. So the longer the characters, the slower the speed

If the amount of data in the database is large enough, you can easily check the speed of processing char types by executing similar SQL
where id like '123%' limit 5;
where id like '1234%' limit 5;
where id like ' 12345%' limit 5;
where id like '123456%' limit 5;
The execution speed of the above SQL is slower in turn. Because the longer the characters, the more times they are compared.

No matter the length of int type, it only compares once

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!