【问题标题】:Slow Query Log returning wrong row examined慢查询日志返回检查错误的行
【发布时间】: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


【解决方案1】:

这闻起来像是意外的“交叉连接”。检查您的代码,看看每个JOIN 是否有一个ON 子句。

如果您需要更多帮助,

  • 提供存储程序的源代码
  • SHOW CREATE TABLE 每张桌子
  • 表格的大小。

【讨论】:

  • admin_user_idtbl5PRIMARY KEY 吗?以及我需要查看的其他问题SHOW CREATE TABLE
猜你喜欢
  • 2016-08-21
  • 2021-10-24
  • 1970-01-01
  • 1970-01-01
  • 2012-06-01
  • 2016-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多