=> 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, так как значения этого столбца уникальны; выбрано индексное сканирование.