Я не знаю много об оптимизации базы данных, но я пытаюсь понять этот случай.
Скажите, у меня есть следующая таблица:
cities
===========
state_id integer
name varchar(32)
slug varchar(32)
Теперь, скажем, я хочу выполнить такие запросы:
SELECT * FROM cities WHERE state_id = 123 AND slug = 'some_city'
SELECT * FROM cities WHERE state_id = 123
Если я хочу, чтобы "слаг" для города был уникальным в пределах его конкретного штата, я бы добавил уникальный индекс для state_id и слаг.
Достаточно ли этого индекса? Или я должен также добавить еще один для state_id, чтобы второй запрос был оптимизирован? Или второй запрос автоматически использует уникальный индекс?
Я работаю над PostgreSQL, но мне кажется, что этот случай настолько прост, что большинство СУБД работают аналогично.
Кроме того, я знаю, что это точно не имеет значения для маленьких столов, но мой пример прост. Подумайте о таблицах 200k + строк.
Спасибо!