mysql - 如何从大数据表中获取一定限度内的部分数据?
问题描述
我想从大型数据表中获取一些数据范围。
我的表结构是: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;
假设样本数据是:
在该表中位置列有子数据的顺序,并根据向上/向下、插入和删除等操作而改变。
因此,在上面的示例中,同一父级的 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 行以提供数据。
所以,我想避免所有行扫描以获取数据。
请给我这个问题的解决方案
提前致谢
解决方案
推荐阅读
- android - 显示来自 json android studio 的重复数据的自定义信息窗口
- jquery-easyui - jeasyui:如何通过客户端在另一个页面中获取查询参数
- javascript - 如何在单击隐藏和显示的div之外的标签a后隐藏/显示标签
- git - Git:获取与拉取,在此 Git 备忘单的上下文中
- php - “排除当前帖子”小部件 wordpress(PHP 帮助)
- ruby - 在 Mongodb 中使用长字符串数据索引键
- android - android - com.parse.ParseRequest$ParseRequestException: 错误的 json 响应
- java - JTable 无法设置标题背景颜色
- kotlin - 从 Any 转换到另一个类在 Kotlin 中返回 null
- javascript - 导航栏切换器折叠不起作用