In my opinion, bigint will be better. It is stored as an integer, which MySQL will understand initially without any conversion, and therefore (I think) will be faster to manipulate. Therefore, you should expect MySQL to be a little more efficient if you use bigint.
According to this manual page , the first 9 digits of your number will be stored in a four-byte block, and the remaining digits (you need up to 12) will be stored in a two-byte block. This means that your column is 6 bytes per row, not 8 bytes for bigint. I would suggest that if a) you are going to store a really obscene number of rows, so the space occupied is a serious concern, and b) you will need to request very little data in question, go with bigint.
source share