【发布时间】:2015-05-12 12:02:10
【问题描述】:
当我的数据库中给定表中只有 20,000 行时,返回的行数如何。请在“row_examination”中指导我。什么意思?
CALL DB.sp_get_program(10, 0, '', '', '', '', 0, 0, 0, '', '', @_cnet_param_p_total);
Time: 150425 8:07:22
User@Host: DB[User] @ [172.31.12.190] Id: 64619
Query_time: 62.843783 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 26264470
SELECT (SELECT CONCAT(au.first_name,' ',au.last_name) FROM tbl5 au WHERE admin_user_id = tbl.schedule_added_by LIMIT 1) as schedule_user_name,
(SELECT CONCAT(au.first_name,' ',au.last_name) FROM tbl5 au WHERE admin_user_id = tbl.image_added_by LIMIT 1) as image_user_name,
(SELECT CONCAT(au.first_name,' ',au.last_name) FROM tbl5 au WHERE admin_user_id = tbl.description_added_by LIMIT 1) as description_user_name,tbl.*
FROM
(SELECT *,
(SELECT image FROM tbl WHERE program_id = p.program_id AND entry_type_id = 2 LIMIT 1) AS image,
(SELECT short_description FROM tbl WHERE program_id = p.program_id AND entry_type_id = 3 LIMIT 1) AS short_description,
(SELECT COUNT(*) FROM tbl WHERE program_id = p.program_id
AND is_live = TRUE) AS live_count
from tbl2 p
INNER JOIN tbl3 pc on p.program_id=pc.program_id
INNER JOIN tbl pu on p.program_id=pu.program_id
INNER JOIN tbl4 c on pc.channel_id=c.channel_id
WHERE pu.from_admin = FALSE AND p.is_active = TRUE
GROUP BY pc.program_channel_id) tbl WHERE tbl.live_count < 3 AND (is_schedule_live= FALSE OR is_image_live=FALSE OR is_description_live=FALSE)
【问题讨论】:
-
我们无法判断 - 如果您展示了 DB.sp_get_program() 的源代码,也许我们可以进行有根据的猜测。
-
我只是想知道“rows_examined”的考虑,比如它包括什么,主表中的总行数,或者它包括子查询、连接等。
-
它包括所有这些 - 看起来您需要添加一些索引。请参阅查询的 EXPLAIN 计划以确定需要它们的位置
标签: mysql performance query-optimization mysql-slow-query-log