[SQL ] JOIN TABLE时WHERE的用法会影响效能吗?

楼主: JYHuang (夏天到了,冷不起来了说)   2016-06-22 22:24:35
今天在写MySQL时,发现条件比较宽时会出现捞资料捞到SERVER没回应
便有点好奇WHERE先后顺序和配对会不会影响效能?
Table A和B大概都是有几千比的资料
两著的关联是由一个可能为空白(不是null)的值
在下了指令
SELECT * FROM A
LEFT JOIN (SELECT * FROM B WHERE A.name like '%k%' ORDER BY x) B
ON A.key=B.key
WHERE (A.key like '%k%' OR B.key like '%k%')
然后就执行到没回应了,
猜想用括号括起来是不是会先JOIN 再做条件
要是如果改下
WHERE A.key like '%k%' OR B.key like '%k%'
会不会先把A做饰选后再去JOIN饰选后的B?
另外
WHERE (A.key like '%k%' OR B.key like '%k%') AND (A.id = n OR B.id)

WHERE A.key like '%k%' OR B.key like '%k%' AND A.id = n OR B.id
应该是不一样结果的吧?
作者: iFEELing (ing)   2016-06-23 03:28:00
关键字:执行计画
楼主: JYHuang (夏天到了,冷不起来了说)   2016-06-23 09:05:00
感谢..我看一下MySQL的工具有没有这功能今天再看一下,主单33万笔、子单10万笔....
作者: streetbad (翊)   2016-06-23 10:27:00
1.JOIN能用inner就尽量不用left...JOIN内尽量避免使用子查询 尤其又是资料笔数多的时候 另外JOIN内如真无可可避免要用到子查询 建议增加字段的限缩 有用的再挑出来 避免使用*2.WHERE条件内 string的查询 避免使用like+or 可以改用union试试看3.开执行计画看看是否有使用正确索引 耗用资源主要是在哪段语法上面 建立相对应的索引 A.key的部分也可以建立全文检索试试看 这样条件内可以尝试使用全文检索另外回答最后面的问题 两个条件查询的结果不会一样上述为个人实务上处理经验..有误请再提出指教Orz
作者: rockchangnew (rock)   2016-06-23 13:50:00
都是Like '%%' 根本不会用索引

Links booklink

Contact Us: admin [ a t ] ucptt.com