我有一个很难优化这样的查询,MySQL的优化或者在选择的
SELECT *
FROM transactions AS t
INNER JOIN users AS u
ON u = t.user_id
WHERE (
u.id = 123
OR u.id IN (
SELECT user_id FROM users_parents AS up
WHERE up.parent_id = 123
)
)
我熬下来的必要,改变了字段名称简单的字段不用英文,所以如果有任何语法错误,最有可能是因为这个。
查询需要从某个(父)用户返回的所有交易,或与母公司用户相关
但是,由于IN的使用情况选择性能的任何用户是可怕的,它的我花了超过6秒的时间在数据库的一小部分上运行这个查询,整个查询数据库超过了600秒!
我读过我应该使用JOIN,但我所有的尝试都给了我不同的最终结果在查询中,我认为我被卡住做错误的语法,我找不到自己的逻辑/语法缺陷因为我一直花费太多时间来查看它,并且一遍又一遍地重做/重做相同的代码。
数据库结构是相当简单的,
= transactions
id|user_id|....
= users
id|....
= users_parents
id|parent_id|user_id
任何输入是非常感谢!
不知道它是如何运行没有错误,但应该加入条件不是'ON u.id = t.user_id'而不是'ON u = t.user_id'? –
@DarshanMehta - 当然,我必须在覆写它时重写它。 – Zjahn