Created
April 19, 2017 03:37
-
-
Save ioquatix/bddda36d9e4ffaceb7a62d7b62259121 to your computer and use it in GitHub Desktop.
user_event schema
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Table "public.user_event" | |
Column | Type | Modifiers | |
-------------+-----------------------------+--------------------------------------------------------- | |
id | integer | not null default nextval('user_event_id_seq'::regclass) | |
user_id | integer | not null | |
latitude | numeric(9,6) | | |
longitude | numeric(9,6) | | |
active | boolean | not null default true | |
poi_id | integer | | |
deal_id | integer | | |
category_id | integer | | |
what | character varying(32) | not null | |
locale | character varying(8) | | |
created_at | timestamp without time zone | not null | |
parameters | jsonb | | |
Indexes: | |
"user_event_pkey" PRIMARY KEY, btree (id) | |
"index_user_event_for_calls" btree (poi_id, created_at) WHERE what::text = 'profile_call'::text | |
"index_user_event_for_nearby_polls" btree (created_at, latitude, longitude) WHERE what::text = ANY (ARRAY['location_change'::character varying, 'poll'::character varying, 'midnight_location'::character varying]::text[]) | |
"index_user_event_for_profile_views" btree (poi_id, created_at) WHERE what::text = 'poi_profile_shown'::text | |
"index_user_event_for_profile_views1" btree (poi_id, created_at, what) WHERE what::text = 'poi_profile_shown'::text | |
"index_user_event_for_profile_views2" btree (created_at, poi_id, what) WHERE what::text = 'poi_profile_shown'::text | |
"index_user_event_for_suggestion_notification" btree (((parameters ->> 'suggestion_id'::text)::integer), what) WHERE (parameters ->> 'suggestion_id'::text) IS NOT NULL | |
"index_user_event_for_visits" btree (poi_id, created_at, latitude, longitude) WHERE what::text = 'location_change'::text | |
"index_user_event_for_visits_3" btree (created_at, latitude, longitude, user_id) WHERE what::text = ANY (ARRAY['location_change'::character varying, 'poll'::character varying, 'midnight_location'::character varying]::text[]) | |
"index_user_event_for_web_clicks" btree (poi_id, created_at) WHERE what::text = 'profile_weblink'::text | |
"index_user_event_on_created_at" btree (created_at) | |
"index_user_event_on_user_id_and_created_at_and_what" btree (user_id, created_at, what) WHERE what::text = ANY (ARRAY['location_change'::character varying, 'menu_tap'::character varying, 'poi_profile_shown'::character varying]::text[]) | |
Here is the details of the table before:
geozone_data_production=> \d+
List of relations
Schema | Name | Type | Owner | Size | Description
--------+----------------------------------------+----------+-------+------------+-------------
public | ar_internal_metadata | table | http | 16 kB |
public | poi | table | http | 1966 MB |
public | poi_id_seq | sequence | http | 8192 bytes |
public | region | table | http | 40 kB |
public | region_id_seq | sequence | http | 8192 bytes |
public | region_range | table | http | 120 kB |
public | region_range_id_seq | sequence | http | 8192 bytes |
public | schema_migrations | table | http | 16 kB |
public | suggestion | table | http | 48 kB |
public | suggestion_conversion | table | http | 2328 kB |
public | suggestion_conversion_aggregate | table | http | 40 kB |
public | suggestion_conversion_aggregate_id_seq | sequence | http | 8192 bytes |
public | suggestion_conversion_id_seq | sequence | http | 8192 bytes |
public | suggestion_id_seq | sequence | http | 8192 bytes |
public | user | table | http | 101 MB |
public | user_event | table | http | 102 GB |
public | user_event_id_seq | sequence | http | 8192 bytes |
public | user_id_seq | sequence | http | 8192 bytes |
(18 rows)
geozone_data_production=> \di+
List of relations
Schema | Name | Type | Owner | Table | Size | Description
--------+--------------------------------------------------------+-------+-------+---------------------------------+---------+-------------
public | ar_internal_metadata_pkey | index | http | ar_internal_metadata | 16 kB |
public | index_region_range_on_region_id | index | http | region_range | 64 kB |
public | index_suggestion_conversion_aggregate_on_suggestion_id | index | http | suggestion_conversion_aggregate | 16 kB |
public | index_suggestion_conversion_on_suggestion_id | index | http | suggestion_conversion | 1512 kB |
public | index_suggestion_conversion_on_user_id | index | http | suggestion_conversion | 1488 kB |
public | index_suggestion_on_poi_id | index | http | suggestion | 16 kB |
public | index_suggestion_on_region_id | index | http | suggestion | 16 kB |
public | index_user_event_for_calls | index | http | user_event | 7312 kB |
public | index_user_event_for_nearby_polls | index | http | user_event | 21 GB |
public | index_user_event_for_profile_views | index | http | user_event | 2405 MB |
public | index_user_event_for_profile_views1 | index | http | user_event | 4449 MB |
public | index_user_event_for_profile_views2 | index | http | user_event | 3665 MB |
public | index_user_event_for_suggestion_notification | index | http | user_event | 8280 kB |
public | index_user_event_for_visits_3 | index | http | user_event | 21 GB |
public | index_user_event_for_web_clicks | index | http | user_event | 20 MB |
public | index_user_event_on_created_at | index | http | user_event | 23 GB |
public | index_user_event_on_user_id_and_created_at_and_what | index | http | user_event | 20 GB |
public | poi_pkey | index | http | poi | 523 MB |
public | region_pkey | index | http | region | 16 kB |
public | region_range_pkey | index | http | region_range | 56 kB |
public | schema_migrations_pkey | index | http | schema_migrations | 16 kB |
public | suggestion_conversion_aggregate_pkey | index | http | suggestion_conversion_aggregate | 16 kB |
public | suggestion_conversion_pkey | index | http | suggestion_conversion | 1544 kB |
public | suggestion_pkey | index | http | suggestion | 16 kB |
public | user_event_pkey | index | http | user_event | 18 GB |
public | user_pkey | index | http | user | 19 MB |
(26 rows)
and after
geozone_data_production=> \d+
List of relations
Schema | Name | Type | Owner | Size | Description
--------+----------------------------------------+----------+-------+------------+-------------
public | ar_internal_metadata | table | http | 16 kB |
public | poi | table | http | 1966 MB |
public | poi_id_seq | sequence | http | 8192 bytes |
public | region | table | http | 40 kB |
public | region_id_seq | sequence | http | 8192 bytes |
public | region_range | table | http | 120 kB |
public | region_range_id_seq | sequence | http | 8192 bytes |
public | schema_migrations | table | http | 16 kB |
public | suggestion | table | http | 48 kB |
public | suggestion_conversion | table | http | 2344 kB |
public | suggestion_conversion_aggregate | table | http | 40 kB |
public | suggestion_conversion_aggregate_id_seq | sequence | http | 8192 bytes |
public | suggestion_conversion_id_seq | sequence | http | 8192 bytes |
public | suggestion_id_seq | sequence | http | 8192 bytes |
public | user | table | http | 101 MB |
public | user_event | table | http | 96 GB |
public | user_event_id_seq | sequence | http | 8192 bytes |
public | user_id_seq | sequence | http | 8192 bytes |
(18 rows)
geozone_data_production=> \di+
List of relations
Schema | Name | Type | Owner | Table | Size | Description
--------+--------------------------------------------------------+-------+-------+---------------------------------+---------+-------------
public | ar_internal_metadata_pkey | index | http | ar_internal_metadata | 16 kB |
public | index_region_range_on_region_id | index | http | region_range | 64 kB |
public | index_suggestion_conversion_aggregate_on_suggestion_id | index | http | suggestion_conversion_aggregate | 16 kB |
public | index_suggestion_conversion_on_suggestion_id | index | http | suggestion_conversion | 1536 kB |
public | index_suggestion_conversion_on_user_id | index | http | suggestion_conversion | 1488 kB |
public | index_suggestion_on_poi_id | index | http | suggestion | 16 kB |
public | index_suggestion_on_region_id | index | http | suggestion | 16 kB |
public | index_user_event_for_calls | index | http | user_event | 6888 kB |
public | index_user_event_for_profile_views | index | http | user_event | 2200 MB |
public | index_user_event_for_suggestion_notification | index | http | user_event | 7936 kB |
public | index_user_event_for_web_clicks | index | http | user_event | 20 MB |
public | index_user_event_on_created_at | index | http | user_event | 16 GB |
public | index_user_event_on_location_changes_user_id | index | http | user_event | 17 GB |
public | index_user_event_on_user_id_and_created_at_and_what | index | http | user_event | 19 GB |
public | poi_pkey | index | http | poi | 523 MB |
public | region_pkey | index | http | region | 16 kB |
public | region_range_pkey | index | http | region_range | 56 kB |
public | schema_migrations_pkey | index | http | schema_migrations | 16 kB |
public | suggestion_conversion_aggregate_pkey | index | http | suggestion_conversion_aggregate | 16 kB |
public | suggestion_conversion_pkey | index | http | suggestion_conversion | 1552 kB |
public | suggestion_pkey | index | http | suggestion | 16 kB |
public | user_event_pkey | index | http | user_event | 16 GB |
public | user_pkey | index | http | user | 19 MB |
(23 rows)
After doing the alter table, it wouldn't do the index only scan. Found out you need to vacuum analyze user_event
from http://ask.use-the-index-luke.com/questions/148/why-is-this-postgres-query-doing-a-bitmap-heap-scan-after-the-index-scan
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
After converting longitude/latitude to float4, and doing
vacuum analyze user_event
(restoring the index only scan):