This note for PostgreSQL console commands.
Switch to expanded display
\x
List databases
\l
Show all the tables
\dt
Show all indexes
\di
Describe a specific table
\d your_table_name
List all views in psql
\dv
To check the definition of a view:
\d+ your_view_name
Example:
\d+ latest_metadata
                          View "public.latest_metadata"
     Column      |           Type           | Collation | Nullable | Default | Storage  | Description
-----------------+--------------------------+-----------+----------+---------+----------+-------------
 instance_id     | text                     |           |          |         | extended |
 launch_date     | timestamp with time zone |           |          |         | plain    |
 last_reboot     | timestamp with time zone |           |          |         | plain    |
 state           | text                     |           |          |         | extended |
 state_priority  | integer                  |           |          |         | plain    |
 last_event_uuid | uuid                     |           |          |         | plain    |
 metadata        | jsonb                    |           |          |         | extended |
View definition:
 SELECT latest_instance_state_metadata.instance_id,
    latest_instance_state_metadata.launch_date,
    latest_instance_state_metadata.last_reboot,
    latest_instance_state_metadata.state,
    latest_instance_state_metadata.state_priority,
    latest_instance_state_metadata.last_event_uuid,
    latest_instance_state_metadata.metadata,
   FROM latest_instance_state_metadata
  WHERE latest_instance_state_metadata.state <> 'EC2_STATE_CHANGE_SHUTTING_DOWN'::text;
Show schema
\d <table_name>
Select by ID
select * from entities where id='e0c275c8-77c6-4f49-9951-572a07642a7b';
Note that you should use single quote, not double quote.
Sample queries
SELECT tweets.*, users.* FROM tweets
  JOIN users ON tweets.sender_id = users.id
  JOIN follows ON follows.followee_id = users.id
  WHERE follows.follower_id = current_userSELECT a.name FROM (SELECT name FROM agentinformation) aStatistics:
SELECT schemaname, relname, last_vacuum, last_autovacuum, last_autoanalyze, last_analyze FROM pg_stat_all_tablesexplain analyze select id, version, status, created_by, created_at, started_at, results_refreshed_at, terminated_by from entities where status='starting' OR status='running' limit 10;Output:
                                                                  QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------
 Limit  (cost=0.25..8.27 rows=2 width=158) (actual time=0.258..0.258 rows=0 loops=1)
   ->  Index Scan using entity_status_not_finished_idx on entities  (cost=0.25..8.27 rows=2 width=158) (actual time=0.257..0.257 rows=0 loops=1)
         Filter: ((status = 'starting'::entity_status) OR (status = 'running'::entity_status))
 Planning Time: 0.119 ms
 Execution Time: 0.283 ms
(5 rows)
 Analyze table (writer instance only, read-only can’t do)
analyze (verbose true, skip_locked) <table_name>;select relname, schemaname, last_vacuum, last_autovacuum, last_autoanalyze, last_analyze from pg_stat_all_tables;Create index
Assume you have a table: your_table_name and you have a column: metadata which is a jsonb, and in that jsonb,
you have a string field keyed with azure-resource-name.
CREATE INDEX idx_azure_resource_name_metadata ON your_table_name USING BTREE ((metadata ->> 'azure-resource-name'::text));If you need to use LOWER() function for the value in this metadata field:
CREATE INDEX idx_azure_resource_name_metadata_lower ON your_table_name USING BTREE (LOWER((metadata ->> 'azure-resource-name'::text)));You can use “CREATE INDEX CONCURRENTLY” to create index concurrently.
CREATE INDEX CONCURRENTLY idx_azure_resource_name_metadata ON your_table_name USING BTREE ((metadata ->> 'azure-resource-name'::text));NOTE
You can’t use
CREATE INDEX CONCURRENTLYto create index concurrently in a transaction.
Drop index
Better to use with IF EXISTS
DROP INDEX IF  EXISTS index_name ;