Структура таблицы и данные
id — первичный ключ, id — нечетный пол = 1, id — четный пол = 0 пол=0,50000 единиц данных, пол=1,50000 единиц данных
CREATE TABLE `people` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`sex` tinyint(1) unsigned DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=100001 DEFAULT CHARSET=utf8;
CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_initData`()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i<=100000 DO
INSERT INTO people(name, sex) VALUES(CONCAT('姓名',i),0);
SET i = i+1;
END WHILE;
END
CALL proc_initData();
UPDATE people SET sex = 1 WHERE MOD(id,2) = 1;
Добавлен тип индекса
Результаты теста:
SELECT * FROM people WHERE sex = 0;
SELECT * FROM people WHERE sex = 1;
| нет индекса пола | с индексом пола | |
|---|---|---|
| sex=0 | ||
| sex=1 |
EXPLAIN после добавления индекса:
причина
Каждая таблица в InnoDB будет иметь кластеризованный индекс.Если таблица определяет первичный ключ, первичным ключом является кластеризованный индекс. Таблица имеет только один кластеризованный индекс, а остальные — обычные индексы. Структура индекса представляет собой дерево B+, неконечные узлы хранят ключи, а конечные узлы хранят значения.
- В кластеризованном индексе конечные узлы хранят записи строк, а индексы и записи InnoDB хранятся вместе.
- Обычный индекс, конечный узел хранит значение первичного ключа.
Пример структуры индекса приведенной выше таблицы выглядит следующим образом (PS: структура индекса предназначена только для справки) кластеризованный индекс
Ссылаться на:
Tickets.WeChat.QQ.com/Yes/TM KR AMC1M…
blog.jcole.us/innodb/
blog.CSDN.net/U012978884/…
D Raven ES есть.Что/MySQL-в кивок…