Полагал, что всегда, однако есть нюанс.
В виде скрытой правой части вторичного индекса добавляются только те колонки первичного индекса, которые отсутствуют во вторичном индексе.
Например:
create table test (a int, b int, c char(10), d int, primary key (a,b,c)) engine=innodb;
вторичный индекс по полю (d) в реальности пример вид (d,a,b,c)
а по полям (c,d) будет иметь вид (c,d,a,b)
в случае использования во вторичном индексе префикса колонки, входящей в первичный ключ, она будет полностью добавлена в скрытой части, т.е
индекс по полям (c(2),d) будет иметь вид (c(2),d,a,b,c)
Т.е. вторичный индекс должен содержать все поля первичного (неважно в явной или скрытой части и неважно в каком порядке).
Источник
https://lefred.be/content/mysql-innodb- … ns-or-not/