Как создать многоуровневый индекс в MySql и как определить, что столбец многоуровневый индексирован?

0

У меня есть таблица действий. он составляет около 1 миллиона записей. его столбцы отключены,

id (PK), u_id (FK), cl_id (FK), activity_log

По умолчанию id (PK) индексируется, и я создал свой собственный индекс для u_id и cl_id, используя,

ALTER TABLE activities ADD INDEX(u_id,cl_id);

Теперь я хотел бы создать многоуровневую индексацию для cl_id (FK) или id (PK) или для обоих столбцов, если это возможно. Как создать многоуровневый индекс с помощью запроса?

Как узнать колонку с многоуровневым индексированием в таблице? я пробовал этот запрос, но он показывает только индексированный столбец,

SHOW indexes FROM activities;

Является ли многоуровневый индекс и некластеризованный индекс одинаковыми?

  • 0
    многоуровневый индекс? Что на земле это должно быть?
  • 0
    @fancyPants theteacher.info/index.php/…
Показать ещё 1 комментарий
Теги:
database-performance
indexing
non-clustered-index

1 ответ

0

Я понятия не имею, что такое "многоуровневый" индекс. Но есть "составные" индексы, такие как

INDEX(last_name, first_name)

что очень полезно для

WHERE last_name = 'James'
  AND first_name = 'Rick'

или даже

WHERE last_name = 'James'
  AND first_name LIKE 'R%'

В MySQL (особенно InnoDB) PRIMARY KEY всегда является уникальным индексом, и он "кластеризуется" с данными. То есть поиск PK очень эффективен. Структура всегда BTree.

"Вторичные ключи" также являются BTrees, но листовой узел содержит PK. Итак, для завершения запроса необходим второй поиск. (Это различие редко ничего не стоит.)

PK и/или вторичные ключи могут быть "составными".

Объявление FOREIGN KEY добавляет вторичный индекс, если еще нет подходящего (PRIMARY или вторичного) индекса, который начинается с столбца в FK.

Ниже приведен избыток, и его следует избегать:

PRIMARY KEY(id),
INDEX(id)           -- DROP this

Индексированный последовательный

Ой! Я не слышал об этом устаревшем методе индексации почти за два десятилетия.

Вопрос дает ссылку на определение "многоуровневого" индексации. Бегите от него! Измените школы. Или, по крайней мере, понять, что ИС больше не считается жизнеспособным.

Для большинства индексирования MySQL использует "BTrees". Это было изобретено несколько десятилетий назад и существенно уничтожено Indexed Sequential. И, в значительной степени, уничтожил Хешинг как метод индексирования на диске.

MySQL BTrees может обрабатывать несколько столбцов, как в моем примере, выше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню