【发布时间】:2017-11-21 08:57:29
【问题描述】:
我在使用 MySQL 时遇到了大数据问题。
我有:
- 一个有 59033 行的
users表,并且 - 一个有 8753 行的
user_notes表。
但是当我搜索哪些用户在某些日期有用户注释时。
我的查询是这样的:
SELECT u.*, rep.name as rep_name FROM users as u
LEFT JOIN users as rep on rep.id = u.add_user
LEFT JOIN authorization on authorization.id = u.authorization
LEFT JOIN user_situation_list on user_situation_list.user_situation_id = u.user_situation
WHERE
EXISTS(
select * from user_notes
where user_notes.note_user_id = u.id AND user_notes.create_date
BETWEEN "2017-10-20" AND "2017-10-22"
)
ORDER BY u.lp_modify_date DESC, u.id DESC
【问题讨论】:
-
你有什么问题...?
-
重写为join,以获得更好的性能。
-
从 user_notes 而不是用户驱动。
-
避免存在而更喜欢Left Join,为什么要加入同一张表users?
-
解释计划在哪里? (& 需要这些表上所有现有索引的详细信息。
标签: php mysql sql optimization exists