我有两张桌子。表people
包含16500行,visits
包含17000行。
我的查询包含LEFT JOIN,因为我必须将visits
与people
相关联。我知道如果有人记录没有访问记录,那么访问列将为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行)上运行良好。
有人可以帮忙吗?
答案 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认为这会给你很多想法..
欢呼声