As mentioned by @shirish, mlocate does not index file permissions.
But stil I have some suggestions for you:
Firstly, from find manual, -perm +mode is deprecated, so you should use -perm /mode instead.
-perm +mode
Deprecated, old way of searching for files with any of the permission bits in mode set. You should use -perm /mode instead.
Trying to use the '+' syntax with symbolic modes will yield surprising results. For example, '+u+x' is a valid symbolic mode (equivalent to +u,+x, i.e. 0111) and will therefore not be evaluated as -perm +mode but instead as the exact mode specifier -perm mode and so it matches files with exact permissions 0111 instead of files with any execute bit set. If you found this paragraph confusing, you're not alone - just use -perm
/mode. This form of the -perm test is deprecated because the POSIX specification requires the interpretation of a leading '+' as being part of a symbolic mode, and so we switched to using '/' instead.
-perm /mode
Any of the permission bits mode are set for the file. Symbolic modes are accepted in this form. You must specify 'u', 'g'
or 'o' if you use a symbolic mode. See the EXAMPLES section for
some illustrative examples. If no permission bits in mode are set, this test matches any file (the idea here is to be
consistent with the behaviour of -perm -000).
Secondly, you can try to speed up find: to do so, you need to be as specific, as it possible. For example:
find /some/path ...
will reduce search time, because you specified path where to search (/some/path), instead of searching whole root directory (/)
And lastly, you can exclude system folders, which you don't want to scan during search. For example:
find /some/path -not \( -path /excluded/path -prune \) -name *.js
locate
is good.find / -xdev -perm +4000