大家好,
我正面临着从一个有限制的7亿行的表中获取数据的问题。下面是我们场景的完整细节:-
我有一个表与7亿行这里是表结构:-
CREATE TABLE `product_items` (
`id` int(11) NOT NULL,
`product_id` int(11) NOT NULL,
`item_id` int(11) NOT NULL,
`model_id` int(11) DEFAULT NULL,
`value` varchar(255) NOT NULL,
`engine_size` varchar(255) DEFAULT NULL,
`position` varchar(255) DEFAULT NULL,
`vehicle_attributes` varchar(255) DEFAULT NULL,
`application_notes` varchar(255) DEFAULT NULL,
`status` tinyint(1) NOT NULL DEFAULT '1',
`created_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
与此数据相关的产品ID = 2型号ID = 1615项目ID = 1共有2个结果。
当我运行此查询时,它在.5秒内给出结果,如屏幕截图:
SELECT `product_items`.* FROM (`product_items`) WHERE `product_items`.`status` = '1' AND `product_items`.`item_id` = 1
AND `product_items`.`product_id` = '2' AND `product_items`.`model_id` = '1615' limit 2;
但是当我运行这个查询:-
SELECT `product_items`.* FROM (`product_items`) WHERE `product_items`.`status` = '1' AND `product_items`.`item_id` = 1
AND `product_items`.`product_id` = '2' AND `product_items`.`model_id` = '1615' limit 10;
它需要太多的时间,20分钟后不显示结果。
我们使用的是6 CPU +16 GB +270 GB磁盘的数字海洋数据库服务
如果有人能帮助我们在这种情况下将不胜感激。
1条答案
按热度按时间wdebmtf21#
你必须添加一些索引,其中之一是这个:
同时添加主键约束:
for more info check here