=> CREATE INDEX ON tickets(passenger_name);
CREATE INDEX
Некоторые основные значения:
=> SELECT reltuples, relpages FROM pg_class WHERE relname = 'tickets';
reltuples | relpages -------------+---------- 2.94986e+06 | 48788 (1 row)
=> SELECT attname, null_frac, n_distinct, left(most_common_vals::text,50) mcv, correlation FROM pg_stats WHERE tablename = 'tickets';
attname | null_frac | n_distinct | mcv | correlation ----------------+-----------+------------+----------------------------------------------------+------------- ticket_no | 0 | -1 | | 1 book_ref | 0 | -0.501751 | {1B1D8A,01FE41,033F6B,074AC9,0955E2,0A1321,0BA271, | -0.00195225 passenger_id | 0 | -1 | | 0.00159387 passenger_name | 0 | 10279 | {"ALEKSANDR IVANOV","SERGEY IVANOV","ALEKSANDR KUZ | 0.000930794 contact_data | 0 | -1 | | 0.00181343 (5 rows)
=> EXPLAIN SELECT * FROM tickets;
QUERY PLAN ------------------------------------------------------------------- Seq Scan on tickets (cost=0.00..78286.57 rows=2949857 width=104) (1 row)
Кардинальность равна числу строк в таблице; выбрано полное сканирование.
=> EXPLAIN SELECT * FROM tickets WHERE passenger_name = 'ALEKSANDR IVANOV';
QUERY PLAN ---------------------------------------------------------------------------------------------- Bitmap Heap Scan on tickets (cost=182.35..20187.94 rows=7473 width=104) Recheck Cond: (passenger_name = 'ALEKSANDR IVANOV'::text) -> Bitmap Index Scan on tickets_passenger_name_idx (cost=0.00..180.48 rows=7473 width=0) Index Cond: (passenger_name = 'ALEKSANDR IVANOV'::text) (4 rows)
Селективность оценена по списку наиболее частых значений; выбрано сканирование по битовой карте.
=> EXPLAIN SELECT * FROM tickets WHERE passenger_name = 'ANNA VASILEVA';
QUERY PLAN -------------------------------------------------------------------------------------------- Bitmap Heap Scan on tickets (cost=10.48..1015.20 rows=265 width=104) Recheck Cond: (passenger_name = 'ANNA VASILEVA'::text) -> Bitmap Index Scan on tickets_passenger_name_idx (cost=0.00..10.42 rows=265 width=0) Index Cond: (passenger_name = 'ANNA VASILEVA'::text) (4 rows)
Селективность оценена исходя из равномерного распределения; выбрано сканирование по битовой карте.
=> EXPLAIN SELECT * FROM tickets WHERE ticket_no = '0005432000284';
QUERY PLAN ------------------------------------------------------------------------------ Index Scan using tickets_pkey on tickets (cost=0.43..8.45 rows=1 width=104) Index Cond: (ticket_no = '0005432000284'::bpchar) (2 rows)
Кардинальность равна 1, так как значения этого столбца уникальны; выбрано индексное сканирование.