Предположим, у меня есть миллионы строк в таблице. Таблица имеет первичный ключ (pk индексируется по умолчанию в postgresql) в столбце id
.Выбор по первичному ключу и другим индексам
Также в таблице есть дополнительные столбцы, такие как year
, name
, phone
и что-то еще.
Я хочу, чтобы найти строку по идентификатору или группы идентификаторов и year
колонки так:
SELECT *
FROM mytable
WHERE year = '1996' AND id = 123123
или как то:
SELECT *
FROM mytable
WHERE year = '1996' AND id IN (123123, 456456, 789789)
Должен ли я создать индекс year
столбца, если у меня есть первичный ключ на id
? Какой тип индексации более эффективен для этого случая?
Что делать, если у меня было всего два года в моем столе (например, 1996 и 1997 годах), было бы лучше, если бы я создал индекс на столбце year
?
Не сравнивать числа и строки. '' 1996'' - это строковое значение, а не число. Некоторые СУБД могут не использовать поиск индекса, если вы не используете постоянное значение, соответствующее типу данных столбца (хотя в течение двух разных лет в «миллионах» строк индекс вряд ли был бы выбран в любом случае). –
Какие РСУБД это? Добавьте тег, чтобы указать, используете ли вы 'mysql',' postgresql', 'sql-server',' oracle' или 'db2' - или что-то еще. –