在JOIN慢组

时间:2017-05-02 11:50:00

标签: mysql

我有两张桌子。我无法透露任何关于它们的信息,所以我嘲笑它们的结构:

(至少9000条记录):

+---------------+-------------+
| Column        | type        | 
+---------------+-------------+
| person_id     | int(11)     | Primary Key
| name          | varchar(255)| 
| company_id    | int(10)     | 
+-----+---------+-------------+

登录(超过1000000条记录):

+---------------+-------------+
| Column        | type        | 
+---------------+-------------+
| id            | int(11)     | Primary Key
| person_id     | int(11)     | 
| date          | datetime    | 
+-----+---------+-------------+

每次登录都是登录表中的记录。 我必须用最新的登录信息列出来自不同公司的人(当时在给定公司的所有人)。

到目前为止我的查询:

SELECT a.name, b.date 
FROM person a JOIN login b ON a.person_id = b.person_id 
WHERE company_id = ? 
GROUP BY b.person_id 
ORDER BY b.date DESC

这需要4到11秒,具体取决于公司,这似乎非常缓慢。在一家公司中,可能有数百人登录数千次,登录表可能非常大。

0 个答案:

没有答案