Like many PostgreSQL database commands, the REINDEX command is very handy when you need to upgrade your database system. It is created to recreate the already created INDEX of your database. There may be situations where there are problems with your database data due to software and hardware issues. These issues can result in incorrect data appearing in your database and views not being able to get the required records. It’s time to restore our already created views so that we can use them again with the REINDEX statement. This article will cover a method for updating already made indexes in a PostgreSQL database.

Using the PostgreSQL PgAdmin GUI

Let’s start with the new Windows 10 desktop screen. Make sure your Windows 10 already has a PostgreSQL database fully configured to use it. To open the PostgreSQL database GUI, tap the Windows 10 search bar at the bottom left corner of your desktop screen. Type “pgAdmin” and the application will appear. Select pgAdmin 4 to quickly open it. Once selected, it will take up to 20 seconds to open normally.

To run, you will need your Database Server password, which you added during installation. Add this password and click OK to continue using it. On the left side, you will see the “Servers” option. Expand it to see the databases. Expand the database option and click on the database you want to use for this implementation. Here we used the word “aksayasin”. Click the query tool icon to open the query area for the database, i.e. “aqsayasin”.

Before we do anything, we need to list all the indexes of our database already made. To do this, you need to use a SELECT statement using “pg_indexes” of the public schema, extracting the “schema name”, “table name”, “index name” and “index definition” column from it. We have a total of 6 indexes already in our “aqsayasin” database with this query.

You can see index names already here

You can see the index names already here, in the 3rd column to the left of the above output. Let’s reindex the “in_new” index of the “new” table and the “public” schema using the REINDEX command here. Use the “REINDEX” keyword with the index name preceded by the “INDEX” keyword, as shown in the query below. This query was successful because the output shows a message that the query was successful. Now this index is being updated, and if there is a problem, then it will not be there anymore.

Not only indexes, but the REINDEX command can also be

Not only indexes, but the REINDEX command can also be disabled to update your entire database table. To do this, you need to add the table name instead of Index. Let’s reindex the table “Atest” with the REINDEX command followed by the keyword “TABLE” before the table name. When executing this query, we again encountered a message about the successful completion of the query in the query output area. The Atest table is also re-indexed or re-created for use.

Not only tables and indexes, you will also use

Not only tables and indexes, you will also use the REINDEX command to update your entire system schema. This means that when reindexing the schema, all your databases or tables will be updated in one query. So we use the REINDEX query again in our query tool to reindex the “public” schema of our database. Use the “SCHEMA” keyword after the REINDEX keyword and before the schema name in this query. On execution your entire schema will be reindexed and after a while it will show you a success message i.e. this will take a little longer than a normal request. This query reindexes all databases on your system, i.e. postgres and others.

To update one database with many tables

To update a single database with many tables, we can also use the REINDEX command. You just need to use the “DATABASE” keyword with the name of the database to be reindexed, preceded by the REINDEX keyword. Let’s reindex the default database “Postgres” using a different database query tool i.e. “aqsayasin. When running this request, you will encounter the error shown in the image below. It says we are currently using a different database and are trying to reindex the “Postgres” database. So we can’t do what we want. This way we can only reindex the database we are working on. Let’s update our team.

When executing this query, you will encounter an error

In the same query, we have replaced the database name, i.e. “aqsayasin”. The REINDEX query is now successful after executing showing that the database has been reindexed correctly.

growing REINDEX is now successful after executing showing

Let’s use the SCHEMA keyword in the same REINDEX command to update or recreate the indexes found in our open database directory i.e. “aqsayasin”. This will also recreate the shared indexes. When executing this instruction in the query tool, we have been successful so far.

executing this instruction in the query tool, we

Using the PostgreSQL shell (psql)

The same functionality can be achieved using the PostgreSQL wrapper. Open the PostgreSQL shell by searching for the keyword “psql” in the search bar. Click on the MySQL shell application and write the name of the local host you used. Now be sure to add the correct name of your database that you want to reindex along with the correct port number. You will then be prompted to add a username and password for your database user. You can also use the “Postgres” database and username, which is the default. Your shell will be ready to use.

same functionality can be achieved with

Let’s see how many indexes we have in the “Ftest” table. To view them, use the “\d+” command with the table name “Ftest”. The output below shows the total of 2 indexes found in this table i.e. iftest and inftest. We will reindex these indexes in the next queries.

Let's see how many indexes we have in

Using the same “\d+” command, we got the indexes displayed for the “Values” table. It shows a single index for that table as shown below. We will also reindex it.

Let's start reindexing the

Let’s start reindexing the “Ftest” table first. Drop the “REINDEX” statement in the PostgreSQL shell with the table name, i.e. Ftest. This is successful and the table is now reindexed. The resulting word “REINDEX” is proof of our success here.

in PostgreSQL shell with table name

To reindex a PostgreSQL schema named “public” we must use the same REINDEX command with the header “SCHEMA”. It will be successful again according to the result. The word “REINDEX” is the success message on our screen.

Use the same REINDEX command with the header

To recreate or de-index a single database, you must specify the database name. Only entries related to this database will be indexed and no other database will be modified.

To recreate or deindex one database

You will find that you cannot reindex another database other than the one currently open, as per the command below.

open a database other than the currently open one


We learned about the REINDEX concept in PostgreSQL database. We’ve seen examples of reindexing an existing INDEX for a particular table and reindexing all indexes found on other tables in one step. This whole concept of reindexing is used to update or recreate indexes for tables, databases and schema, i.e. all in one. For all new users of the PostgreSQL database, this article will be very useful for learning.


Leave a Reply

Your email address will not be published.

Scroll to top