0

我有两张桌子。表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 行)上运行良好。

任何人都可以帮忙吗?

4

1 回答 1

1

如果您正在创建一个新的 MySQL 表,您可以使用 INDEX 术语指定要索引的列。索引是您可以在 MySQL 表上启用以提高性能的额外内容
http://www.databasejournal.com/features/mysql/ article.php/1382791/Optimizing-MySQL-Queries-and-Indexes.htm
http://www.tutorialspoint.com/mysql/mysql-indexes.htm查看这个它给了你很多想法..

干杯

于 2012-08-28T12:51:30.177 回答