Настройка индексов MySQL (1) базовые знания индексов

Базовые знания индекса

При обычной доставке внешних проектов мы часто делаем некоторые POC для быстрой разработки связанных веб-приложений. Каждый раз, когда мы разрабатываем структуру библиотечной таблицы, мы будем рассматривать использование индексов. Индекс используется правильно, что является качественным улучшением для опыт запроса. Ниже приводится сводка индекса. Некоторые точки оптимизации в сочетании с некоторыми простыми случаями (некоторые архивы, изученные ранее), делают общий доступ

Преимущества индексации

  1. Значительно уменьшить объем данных, которые сервер должен сканировать
  2. Помогите серверу избежать сортировки и временных таблиц
  3. Превратите случайный io в последовательный io

Полезность индекса

  1. Быстро находите строки, соответствующие предложению where
  2. Исключите строки из рассмотрения, если вы можете выбирать между несколькими индексами, mysql обычно использует индекс, который находит наименьшее количество строк
  3. Если таблица имеет многостолбцовый индекс, оптимизатор может использовать любой крайний левый суффикс индекса, чтобы найти строку.
  4. Когда есть ссылка на таблицу, получить данные строки из других таблиц
  5. Найдите минимальное или максимальное значение определенного столбца индекса
  6. Если сортировка или группировка выполняется по крайнему левому префиксу доступного индекса, то таблица сортируется и группируется.
  7. В некоторых случаях запрос можно оптимизировать для получения значения без запроса строки данных.

Индексная классификация

  • Индекс первичного ключа: называется первичным ключом, исходным является ПЕРВИЧНЫЙ КЛЮЧ, состоящий из одного или нескольких столбцов, используемых для однозначной идентификации записи в таблице данных. Таблица не может иметь первичного ключа, но может быть не более одного первичного ключа, а значение первичного ключа не может содержать NULL.
  • Уникальный индекс: убедитесь, что никакие две строки данных в таблице не имеют абсолютно одинакового значения ключа, чтобы помочь сохранить целостность данных.
  • Обычный индекс: самый простой индекс без каких-либо ограничений - это индекс, который мы часто используем.
  • Полнотекстовый индекс: Полнотекстовый индекс (FULLTEXT) может применяться только к таблице данных механизма MyISAM, но после mysql5.7 innodb также поддерживает его, который действует на столбцы с типами данных CHAR, VARCHAR и TEXT.
  • Комбинированный индекс: используйте несколько столбцов в качестве одного индекса для поиска по принципу крайнего левого соответствия.

Структура данных, используемая индексом

  • Хеш-таблица
  • B + tree
    Эта часть последующей деятельности будет отдельной статьей, которой мы расскажем.

Метод сопоставления индексов

Выполните следующий оператор создания таблицы:

create table staffs(
    id int primary key auto_increment,
    name varchar(24) not null default '' comment '姓名',
    age int not null default 0 comment '年龄',
    pos varchar(20) not null default '' comment '职位',
    add_time timestamp not null default current_timestamp comment '入职时间'
  ) charset utf8 comment '员工记录表';
-----------
alter table staffs add index idx_nap(name, age, pos);
  • Сопоставление полного значения: сопоставление полного значения относится к сопоставлению со всеми столбцами в индексе, например
    explain select * from staffs where name = 'July' and age = '23' and pos = 'dev';
  • Сопоставить крайний левый префикс: сопоставить только первые несколько столбцов, например:explain select * from staffs where name = 'July' and age = '23'; explain select * from staffs where name = 'July';
  • Префикс столбца сопоставления: вы можете сопоставить, например, начало значения столбца;explain select * from staffs where name like 'J%';explain select * from staffs where name like '%y';
  • Значение диапазона соответствия: вы можете найти данные в определенном диапазоне,explain select * from staffs where name > 'Mary';
  • Точно соответствовать одному столбцу, а диапазон - другому столбцу: вы можете запросить весь первый столбец и часть второго столбца, напримерexplain select * from staffs where name = 'July' and age > 25;
  • Запрос, который обращается только к индексу: при запросе вам нужно только получить доступ к индексу, без доступа к строке данных, которая по сути является покрывающим индексом, например:explain select name,age,pos from staffs where name = 'July' and age = 25 and pos = 'dev';

рекомендация

отblog.csdn.net/sun6838693/article/details/115307491
рекомендация