'locate' and 'updatedb' are the front runners in
searching for the existence of any file on a Linux system.

In order to operate efficiently, 'locate' uses a
database rather than hunting individual directory paths.

For this to operate, and remain current, it means the database
itself must be updated.

To do to this, 'updatedb' is invoked.

You can invoke updatedb manually any time you feel like
it. However, it is quite the norm, for this binary to be
executed in a cron. Cron.daily at5 am to be exact.

The two bottom line questions you will be asking, is

'how do I change what is included/excluded", and

"how do i set the time when this is updated.

The piece of magic you are interested in is
/etc/cron.d/Daily/50update-locatedb

This is a soft link to the common pool of cron scripts in
/etc/cron.d/lib The '50' tells the background cron job
the order in which to execute this, and other scripts found in
the same directory. All 'objects' found in the Daily directory
are executed at the same time each day. (see below)

Don't worry overly much about what soft links are,
essentially, this mechanisism is a very "Linux way of doing
things". A pool of common scripts are maintained in a ?lib
directory, and they are linked to, from various other parts of
the Linux file system. In this way, redundant copies of
binaries are minimised and only ONE script needs to be altered
to affect all players. In this case, of all the scripts
availaible for use by cron, in the cron library, we are
interested in the update-locatedb script.

While we are on the subject of cron libraries, do not be
overly impressed with the name. It is not for gurus only, they
are simple-enough bash shell scripts that anyone, you and i,
can write.

When is updatedb
invoked?

5:05 a every morning.

How do I change it?

Edit /etc/crontab

change the Daily script time to something other than 55 5,
OR

edit the hashed out entry for updatedb so that it runs
separately any time you like.