SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 08.03.2024 14:30:41

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Всегда ли первичный ключ добавляется в правую часть вторичного индекса innodb?

Полагал, что всегда, однако есть нюанс.
В виде скрытой правой части вторичного индекса добавляются только те колонки первичного индекса, которые отсутствуют во вторичном индексе.

Например:

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/

Неактивен

 

#2 09.03.2024 11:55:01

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Всегда ли первичный ключ добавляется в правую часть вторичного индекса innodb?

vasya, спасибо! Очень интересная особенность, не знал про это.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson