Новичок в Postgres и не очень знаком с тем, как работают RDBMS в целом Я читал, что в некоторых случаях добавление индекса в таблицу ускоряет выполнение запросов к базам данных. Я попробовал это с таблицей и сделал это (Postgres v11.2):
CREATE TABLE testtable(
idString text,
comment text
);
INSERT INTO
testtable(idString, comment)
VALUES
('1:2', 'some text'),
('12:2', 'blah'),
('2:2', 'other text'),
('1:3', 'blah'),
('33:2', 'blah');
CREATE INDEX myindex ON testtable(idString asc);
В руководстве, которое я читал, говорилось, что без индекса база данных обычно выполняет «последовательное сканирование» всех записей до тех пор, пока не найден запрос, но с индексом она выполняет «сканирование индекса». Руководство говорит, чтобы увидеть план запроса, используя «EXPLAIN», поэтому я делаю:
EXPLAIN SELECT * FROM testtable WHERE myid = '1:3';
Вывод, однако, по-прежнему выглядит как последовательное сканирование:
QUERY PLAN
----------------------------------------------------------
Seq Scan on testtable (cost=0.00..1.07 rows=1 width=64)
Filter: (myid = '1:3'::text)
(2 rows)
Я проверил с помощью pgAdmin и вижу, что myindex
существует, но я не уверен, почему база данных не использует его? Есть что-то еще, что я пропускаю / не сделал?