Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is varchar(128) better than varchar(100)

Quick question. Does it matter from the point of storing data if I will use decimal field limits or hexadecimal (say 16,32,64 instead of 10,20,50)?

I ask because I wonder if this will have anything to do with clusters on HDD?

Thanks!

like image 346
RandomWhiteTrash Avatar asked Oct 05 '11 07:10

RandomWhiteTrash


People also ask

What does VARCHAR 128 mean?

A varchar is a variable character field. This means it can hold text data to a certain length. A varchar(32) can only hold 32 characters, whereas a varchar(128) can hold 128 characters.

What does VARCHAR 100 mean?

VARCHAR is a variable length string data type, so it holds only the characters you assign to it. VARCHAR takes up 1 byte per character, + 2 bytes to hold length information. For example, if you set a VARCHAR(100) data type = 'Jen', then it would take up 3 bytes (for J, E, and N) plus 2 bytes, or 5 bytes in all.

What size should I use for VARCHAR?

The size of the maximum size (m) parameter of a VARCHAR column can range from 1 to 255 bytes. If you are placing an index on a VARCHAR column, the maximum size is 254 bytes. You can store character strings that are shorter, but not longer, than the m value that you specify.

What does VARCHAR 200 mean?

This is the var (variable) in varchar : you only store what you enter (and an extra 2 bytes to store length upto 65535) If it was char(200) then you'd always store 200 characters, padded with 100 spaces.


1 Answers

VARCHAR(128) is better than VARCHAR(100) if you need to store strings longer than 100 bytes.

Otherwise, there is very little to choose between them; you should choose the one that better fits the maximum length of the data you might need to store. You won't be able to measure the performance difference between them. All else apart, the DBMS probably only stores the data you send, so if your average string is, say, 16 bytes, it will only use 16 (or, more likely, 17 - allowing 1 byte for storing the length) bytes on disk. The bigger size might affect the calculation of how many rows can fit on a page - detrimentally. So choosing the smallest size that is adequate makes sense - waste not, want not.

So, in summary, there is precious little difference between the two in terms of performance or disk usage, and aligning to convenient binary boundaries doesn't really make a difference.

like image 58
Jonathan Leffler Avatar answered Sep 23 '22 13:09

Jonathan Leffler