improve speed of fuzzy search
You create the fuzzystrmatch extension, but you never use it.  Are you missing an example?

This type of query is very context sensitive, so you have to test it on realistic example data with realistic queries.  Your example doesn't look very realistic.  For one thing, your random string is the same random string in every row, not a different random one for each.  Also, having small integers embedded in your names seem pretty odd.

Your query of '120000' also doesn't seem very realistic, or if it is then it is pretty unfortunate.  Due to the repetition of zeros, it is a low complexity query and doesn't give the query engine much to grab on to.  If you are worried about the average case rather than the worst case, it is a poor choice of example.

Using the "%" operator on strings of quite unequal length is rarely the right thing to do.  Perhaps you want "%>" or "%>>" instead. There were added to pg_trgm in 9.6 and 11, respectively.  They measure how similar the query is to the most similar substring chunk of the column, rather than the whole of the column. They differ in that %>> requires the "chunk" to be aligned at word boundaries, while %> does not.  Not only do they give what I think are better results, but they are also much faster (in this case, I don't know about in general).

Finally, your query would be much faster if you increased the setting of pg_trgm.similarity_threshold.  Of course, then you also get no results, because none of your data is really all that similar to '120000'.  This goes back to the choice of operator, as the presence of 'CLXBHQVEKC' drags down how similar anything can be when using "%".