包含LEFT JOIN的查询中的mysql计数行挂起服务器

时间:2012-08-28 12:29:04

标签: mysql join count left-join hang

我有两张桌子。表people包含16500行,visits包含17000行。 我的查询包含LEFT JOIN,因为我必须将visitspeople相关联。我知道如果有人记录没有访问记录,那么访问列将为NULL。

这个简单的查询就像一个魅力。

SELECT * FROM people LEFT JOIN visits ON people.id = visits.id_people;

当我尝试计算返回的行时, MySQL挂起(或计数)30+秒或直到我杀了它。这在生产环境中是不可接受的。

以下是我尝试用于计算结果行的不同方法,但所有这些方法都有相同的挂起结果。

SELECT COUNT(*) FROM people LEFT JOIN visits ON people.id = visits.id_people;

SELECT SQL_CALC_FOUND_ROWS * FROM people LEFT JOIN visits ON people.id = visits.id_people;
SELECT FOUND_ROWS();

奇怪的是,这些方法在小型测试表(5行和5行)上运行良好。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

如果要创建新的MySQL表,可以使用INDEX term指定要索引的列。索引是可以在MySQL表上启用以提高性能的额外值 http://www.databasejournal.com/features/mysql/article.php/1382791/Optimizing-MySQL-Queries-and-Indexes.htm
http://www.tutorialspoint.com/mysql/mysql-indexes.htm认为这会给你很多想法..

欢呼声