Question: Each physical user will have about 20 tables in the database.

When a new user registers, another 20 tables will be created with access only for their new MySQL account.

Data does not have to be shared between users.

Is this logic more secure than simply having just 20 tables for all the users?
And what about performance will be dead or not ?

**EDIT**

I just want to be sure that a user who likes to "play" with injections and finds a way around will not be able to access other user data.

Answer: 
Yes, the exact same "byte sequence" will always yield the exact same digest value regardless of implementation (assuming it's a correct implementation!) 

The key word is this is always true for "byte sequence", but not always for "string" as you wrote. Depending on a lot of things, strings can be generated differently on different systems. There is the potential for a lot of white space or line ending differences, or ASCII vs Unicode UTF-16 encoding issues.

Also, be aware that when you display the digest value, you run into similar issues. Different implementations might represent hexadecimal digits with either upper case or lower case values, so a string equality test might fail.
The behaviour that every string in a sha1 hash is the same lies in a common convert format called base64 as a convention (and byte sequence). This is due to encoding a 20-byte hash value into 40 bytes of hex, and then encoding those 40 bytes of hex into 56 bytes (40 / 3 \* 4, then rounded up to the nearest 4 bytes) of base64 data.

So the proof is that 2^160 = 16^40 in hexadecimal representation.