mysql 我的sql查询在7亿行的表中花费的时间也有限制

kmpatx3s  于 2023-01-25  发布在  Mysql
关注(0)|答案(1)|浏览(115)

大家好,
我正面临着从一个有限制的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磁盘的数字海洋数据库服务
如果有人能帮助我们在这种情况下将不胜感激。

wdebmtf2

wdebmtf21#

你必须添加一些索引,其中之一是这个:

ALTER TABLE `product_items` ADD INDEX `product_items_index` (status, item_id, product_id, model_id)

同时添加主键约束:

ALTER TABLE product_items ADD PRIMARY KEY(id);

for more info check here

相关问题