Я хочу получить некоторый диапазон данных из большой таблицы данных.
Моя таблица выглядит так: child_table
`clustering_key` int(10) unsigned NOT NULL AUTO_INCREMENT,
`Parent_id` char(36) NOT NULL DEFAULT '',
`child_id` char(36) NOT NULL DEFAULT '',
`data` text,
`position` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`clustering_key`),
UNIQUE KEY `child_index` (`child_id`) USING BTREE,
KEY `position_index` (`position`),
FULLTEXT KEY `data_index` (`data`),
CONSTRAINT `FK_child_table_parent_table` FOREIGN KEY (`Parent_id`) REFERENCES `parent_table` (`id`) ON DELETE CASCADE ON UPDATE CASCADE )
ENGINE=InnoDB AUTO_INCREMENT=100001 DEFAULT CHARSET=utf8;
Предположим, что пример данных:

В этой таблице столбец Position имеет порядок дочерних данных и изменяется в соответствии с операциями, такими как вверх / вниз, вставка и удаление.
Итак, в приведенном выше примере 9 дочерних строк одного и того же родителя. Я хочу получить от 3 до 6 дочерних данных в порядке расположения.
Когда я пытаюсь выполнить запрос
Select *
FROM child_table
where Parent_id='8c002adc-9a1c-4eeb-94b6-72d3e30c3862'
order by Position
limit 3,6;
Этот запрос дает мне правильные данные, но MySql сканирует 9 строк для этого. Предположим, у Parent 90000 данных, поэтому mysql просканирует все 90000 строк, чтобы получить данные.
Итак, я хочу избежать сканирования всех строк для получения данных.
Пожалуйста, дайте мне решение этой проблемы
Заранее спасибо