:)
Читаю про multicolumn index. Есть таблица, реализующая связь многие-ко-многим вот так: reltable (a text, b text). a и b - строковые идентификаторы. 99% запросов в нее либо "where a = ...", либо "where b = ...". Есть ли вообще разумный смысл смотреть на индекс (a, b) или жить дальше с двумя отдельными индексами (a) и (b)?
Я бы не стал делать индекс (a, b). Если индекс с одним полем на запрос select from where a = "..." возвращает быстро данные, то select * from where a = "..." и b = "..." тоже вернёт быстро.
составной индекс сперва сортирует по первому полю, затем по второму, следовательно при поиске b= без а= он не может использоваться
Раз она реализует такую связь, в ней уже должен быть первичный ключ — (a, b) или (b, a). Если нужен поиск "наоборот" — можно добавить такой индекс (по двум полям в обратном порядке, ну или только по одному).
Покуда связь живёт в приложении, СУБД неведомо что это вообще такое. :)
Ну так это одна из обычных ошибок проектирования, такие дела. ;) > Ну а PK тут вообще отдельный int, так текущий ETL сделан. Обычно в таких таблицах это поле вообще не нужно.
Обсуждают сегодня