Всем привет! У меня есть такая табличка:
CREATE TABLE `NewTable` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id' ,
`parent_id` int(11) UNSIGNED NOT NULL COMMENT 'id родителя' ,
`left_key` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'смещение слева' ,
`right_key` int(11) UNSIGNED NOT NULL COMMENT 'смещение справа' ,
`name_ru` varchar(150) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'наименование ru' ,
`name_en` varchar(150) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'наименование en' ,
`path` varchar(150) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'хлебные крошки' ,
`level` int(11) UNSIGNED NOT NULL COMMENT 'уровень' ,
PRIMARY KEY (`left_key`, `id`),
UNIQUE INDEX `id` (`id`) USING BTREE ,
UNIQUE INDEX `left_key` (`left_key`) USING BTREE ,
UNIQUE INDEX `right_key` (`right_key`) USING BTREE ,
INDEX `path` (`path`) USING BTREE ,
INDEX `level` (`level`) USING BTREE
)
ENGINE=MyISAM
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
COMMENT='основной каталог сайта'
AUTO_INCREMENT=358
CHECKSUM=0
ROW_FORMAT=DYNAMIC
DELAY_KEY_WRITE=0
;
А вот запрос:
SELECT
id,
name,
level
FROM
catalog
WHERE
left_key >= 303
AND right_key <= 406
ORDER BY
left_key
Смотрел через Explain - стоблец Rows = 326. На выход идет гораздо меньше данных. Тобишь все поля таблицы задействованы.. Почему так? Я ведь задал where, и индексы прописаны..