The Python Oracle

CharField max_length 2^n vs 2^n-1

--------------------------------------------------
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------

Music by Eric Matyas
https://www.soundimage.org
Track title: Lost Meadow

--

Chapters
00:00 Charfield Max_length 2^N Vs 2^N-1
01:01 Accepted Answer Score 11
01:51 Thank you

--

Full question
https://stackoverflow.com/questions/7233...

--

Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...

--

Tags
#python #database #django

#avk47



ACCEPTED ANSWER

Score 11


You've mostly got it. It's not just the unique=True argument for 255, it's also that strings up to 255 long can sometimes be stored more efficiently.

So the answer is that there is maybe a point to doing it for 255 vs. 256, but for other lengths it's very likely to be pointless. Picking power-of-two lengths to begin with is often not done for a scientific reason (most of us haven't actually benchmarked that our 512-long field made our application run measurably faster than a 513-long field).

That said, there may be application-specific cases where the Django application is a frontend to a C application, where having N^2-1 strings is useful further down the line to efficiently store the additional terminating \0 byte.