以下查询运行了6.6秒,并产生了26行。
EXPLAIN结果是使用键扫描两个23和48行的两个'ref'类型的SIMPLE查询。
表f有1000行,表m有42000行。
seltype表类型键key keylen ref行过滤多余的 SIMPLE f ref PRIMARY,forum_site_id 4 const 23 100.00使用where; 使用临时的;使用文件 排序forum_site_id, forums_flag_list_new_posts SIMPLE m ref forum_msg_forum_id,forums_msg_forum_id 5 locali_db.f.id 48 100.00在其中使用 forum_msg_status, forum_msg_date
这是查询(非常简单):
SELECT
m.id AS msg_id,
m.public_id AS msg_public_id,
more fileds of this table ...
f.id AS forum_id,
f.public_id AS forum_public_id,
more fileds of this table ...
FROM
forum_msgs m
INNER JOIN forums f ON
m.forum_id = f.id
WHERE
f.site_id = 19
AND f.flag_list_new_posts = 1
AND m.msg_date >= 1434803744
AND m.status <> 11
ORDER BY
m.msg_date DESC
LIMIT
100
WHERE和ORDER BY子句中的所有字段均为INTEGER类型,并定义为INDEX。字段forum_id定义为FOREIGN KEY。
我很乐意找出可能导致异常表现的原因:)
该数据库在QDS很高(峰值高达200)的RDS上运行。平均而言,这会导致50 IOP / s的磁盘速度。将实例存储类型从磁性固态硬盘更改为通用固态硬盘解决了该问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句