Mysql 如何解释这个警告
我正在使用MySQL 5.7.19,在我对以下脚本运行Mysql 如何解释这个警告,mysql,Mysql,我正在使用MySQL 5.7.19,在我对以下脚本运行explain之后: explain select a.seller_id AS seller_id, a.seller_name AS seller_name, b.user_name AS user_name, c.state AS state from a join b join c where((b.seller_name = a.seller_name) and (c.us
explain
之后:
explain select a.seller_id AS seller_id,
a.seller_name AS seller_name,
b.user_name AS user_name,
c.state AS state
from a
join b
join c
where((b.seller_name = a.seller_name) and
(c.user_id = 17) and(b.user_id = 17) and
(a.gmt_create between ((now() - interval 600 minute)) and ((now() + interval 600 minute))))
order by a.gmt_create;
以下是我收到的警告信息:
要将其转换为人类可读的形式:
select a.seller_id AS seller_id,
a.seller_name AS seller_name,
b.user_name AS user_name,
c.state AS state
from a
join b
join c
where((b.seller_name = a.seller_name) and
(c.user_id = 17) and(b.user_id = 17) and
(a.gmt_create between <cache>((now() - interval 600 minute)) and <cache>((now() + interval 600 minute))))
order by a.gmt_create;
选择一个卖方id作为卖方id,
a、 卖方名称作为卖方名称,
b、 用户名作为用户名,
c、 国家作为国家
从
加入b
加入c
其中((b.卖方名称=a.卖方名称)和
(c.user_id=17)和(b.user_id=17)以及
(a.gmt_在((现在()-间隔600分钟))和((现在()+间隔600分钟))之间创建)
按a.gmt\u创建订单;
标签是什么意思???引用以下内容:
这意味着,你计算<代码> NOW()-间隔600分钟只做一次,结果用于你的WHERE子句检查的每一行。“谢谢”CBroe,你介意回答它吗?我会接受什么警告信息,然后把它当作一个音符或一个信息,而不是一个警告。这没什么不好的,我明白了。我是否可以改进我的查询?我希望解释命令能给我一些建议。我已经没有什么想法了。快速看一眼,您正在与表c进行交叉连接,这可能不是您想要的。将连接条件放在连接子句中,例如,
a连接b.seller\u name=a.seller\u name
,而不是放在where子句中。我不能用这一点信息说更多。用以下信息发布另一个问题:查询、查询解释(实际解释结果,没有人关心警告)、create table语句(对每个表执行show create table\G
,对每个表执行show index from;
)。但请回答另一个问题!