如何改善20,000条记录的交叉联接?

时间:2013-03-01 16:34:08

标签: mysql

我有两个表:users (userid,student_no,name)regd (semester,student_no)users包含大约7,000条记录,regd包含大约20,000条记录。有时,regd中的条目不在users

如何快速选择usersregd中有条目='2012-2'条目的所有条目? 我试过这个:

 SELECT * FROM  `regd` , users WHERE
      semester =  '2012-2' AND users.student_no = regd.student_no

但如果我有一个很小的数据库,那么加载查询会花费很长时间。每六个月,大约有10,000个条目被添加到regd,每年约有2,500个条目被添加到users

1 个答案:

答案 0 :(得分:3)

在连接列上添加索引:

CREATE INDEX idx_regd_student_no ON regd(student_no);

CREATE INDEX idx_users_student_no ON users(student_no);

此外,如果您的表没有PK,请添加一个。对于regd,您可以使用PK = (semester, student_no)

正如其他评论所说,22k记录并不大,所以我只能假设你没有任何合适的指数。

希望这有帮助。