标签:performance indexing query-optimization mysql
我正在用以下查询查询数据库.
该查询需要21秒才能执行.
我已经通过解释查询进行了检查.
我分别在字段groupId和batchId上具有索引.
EXPLAIN SELECT message, sentOn, maskId, isDndCheck, contentType
FROM sms_histories
WHERE groupId = 1750
GROUP BY batchId
ORDER BY batchId DESC
LIMIT 0 , 1
我正在通过该查询获取群组的最新帖子.
我的解释查询显示了结果
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE sms_histories index groupId batchId 5 NULL 888 Using where
请告诉我问题是什么,为什么这个查询需要这么长时间?
解决方法:
我认为您应该像bobince所说的那样对batchId和groupId使用复合索引.我认为您的表sms_histories中将有很多数据.正如bobince所说,您正在使用有点尴尬的数据库架构.您应该尝试对其进行规范化并从中删除复制.在开始新项目之前,您应该更多地关注数据库架构.
因此,最主要的是尝试同时在batchId和groupId上建立索引.
标签:performance,indexing,query-optimization,mysql 来源: https://codeday.me/bug/20191209/2096770.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。