概述
http://linux.chinaunix.net/techdoc/database/2008/07/29/1021449.shtml
http://www.cnblogs.com/wzjbk/p/5813956.html
遇到一个问题
SELECT DISTINCT t.id
FROM TRANSACTION t
,action a
,svr_nodes m
,svr_nodes s
WHERE (
t.STATUS NOT IN (
1
,9
,10
)
OR (
t.STATUS = 9
AND t.UpdateTime >= '2017-06-20 01:09:44'
)
OR (
t.STATUS = 10
AND t.UpdateTime >= '2017-06-20 01:09:44'
AND EXISTS (
SELECT 1
FROM action a2
WHERE t.id = a2.transid
AND a2.STATUS <> 2
)
)
)
AND t.id = a.transid
AND (
(
(
t.type IN (
128
,371
,283
,273
,404
)
)
AND (
a.IdName = m.node_name
OR a.IdName = s.node_name
)
AND m.node_name = s.peer_name
AND m.peer_name = s.node_name
AND (
m.node_ip IN (
'10.205.128.183'
,'10.205.128.213'
)
OR s.node_ip IN (
'10.205.128.183'
,'10.205.128.213'
)
)
)
OR (
t.type IN (
363
,281
)
AND t.SetId = '5'
AND t.AppId = '29'
)
);
这句sql 执行顺序没有按照预想的来
根据上面引用了两篇博客, 加了一句hint
select distinct t.id from transaction t STRAIGHT_JOIN action a ...
于是执行计划变成下面这样
查询会在2秒左右返回. 之前的跑了一天都没有返回.
mysql 执行计划有时候不按照我们预想的来执行, 所以只能用hint 来告诉服务器按照什么顺序连接各个表了.
最后
以上就是热情鸡翅为你收集整理的mysql 强制执行顺序的全部内容,希望文章能够帮你解决mysql 强制执行顺序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复