当前位置:网站首页>mysql优化,sql执行非常卡顿,不改变sql结构达到10秒内结束

mysql优化,sql执行非常卡顿,不改变sql结构达到10秒内结束

2022-06-23 03:36:00 CSDN问答

一个sql执行非常卡顿,不改变sql结构,9万多+8万多数据,达到10秒内结束查询
原sql SELECT * FROM a_itemsListVer WHERE (locate('防水材料,防水卷材', waterproof) > 0 OR itemsListId IN (SELECT itemsListId FROM a_itemsListOtherVer WHERE locate('防水卷材', waterproofMemo) > 0 ))

//样例只保留了部分关键字段。
//表一 9万多条数据
CREATE TABLE a_itemsListVer (
id varchar(20) NOT NULL,

itemsListId varchar(20) NOT NULL COMMENT '主项目id',
waterproof varchar(150) NOT NULL DEFAULT '',

PRIMARY KEY (id),
KEY fId (itemsListId),

KEY waterproof (waterproof) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;
//样例数据 INSERT INTO a_itemsListVer VALUES ('zgypu9zqg5ys', 'vs6h24c5b79w', '防水卷材');

//表二 8万多条数据
CREATE TABLE a_itemsListOtherVer (
id varchar(20) NOT NULL COMMENT 'itemsListVerId相同',
itemsListId varchar(20) NOT NULL COMMENT '主项目id',
waterproofMemo varchar(200) NOT NULL DEFAULT '',

updateTime datetime NOT NULL COMMENT '更新时间',
time datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (id),
KEY itemsListId (itemsListId),

KEY waterproofMemo (waterproofMemo) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
//样例数据 INSERT INTO a_itemsListOtherVer VALUES ('zgzrzulitiid', 'vs6h24c5b79w', '防水卷材', '2022-6-16 11:06:41', '2022-6-16 11:06:46');

目前运行结果都是超过几分钟。数据库服务器配置2核4G
改造的最后一版还是很卡

SELECT COUNT(*) FROM a_itemsListVer WHERE ( if(locate('防水材料,防水卷材', waterproof)>0 , true ,
if(
locate ((SELECT GROUP_CONCAT(waterproofMemo) FROM a_itemsListOtherVer WHERE itemsListId=a_itemsListVer.itemsListId ),'防水卷材' )>0
,true,0 ) ) )

我想要达到的结果。能正常运行,10秒内结束查询
原网站

版权声明
本文为[CSDN问答]所创,转载请带上原文链接,感谢
https://ask.csdn.net/questions/7743352