作者:mobiledu2502891413 | 来源:互联网 | 2023-02-04 08:45
一切都在数据库所在的同一台机器上运行.这些查询以不同的方式执行相同的操作.我使用mariadb作为数据库引擎.
查询1:
SELECT p.*
FROM users as u INNER JOIN votes ON u.Id=votes.UserId INNER JOIN posts as p ON p.Id=votes.PostId
WHERE (SELECT MIN(u2.reputation)
FROM users as u2 INNER JOIN votes ON u2.Id=votes.UserId INNER JOIN posts as p2 ON p2.Id=votes.PostId
WHERE p2.Id=p.Id) >= {}
ORDER BY p.Id;
在mysql命令行中大约需要2.9秒,在phpmyadmin中大约需要0.1秒
查询2:
SELECT P.*
FROM posts as P
JOIN votes AS V on P.Id=V.PostId
JOIN users AS U on V.UserId=U.Id
WHERE U.Reputation >={}
AND P.Id NOT IN
(SELECT DISTINCT (P2.Id)
FROM posts P2, votes V2,users U2
WHERE P2.Id=V2.PostId
AND V2.UserId =U2.Id
AND U2.reputation <{})
ORDER BY P.Id;
在mysql命令行中占用大约3.1秒,在phpmyadmin中占用0.9秒.
这些时间都取自运行查询后自动显示的时间.
为什么phpmyadmin会更快?为什么在phpmyadmin中速度的百分比差异如此之大,而在mysql命令行中却没有?
1> tadman..:
像phpMyAdmin这样的前端工具经常在一个LIMIT
子句上使用,以便对结果进行分页,而不会在大型表上崩溃浏览器或应用程序.一个可能返回数百万条记录的查询,并且这样做需要花费大量时间,如果受到更多约束,它将运行得更快.
将有限查询与完整查询进行比较并不公平,检索时间将大不相同.检查两个工具是否正在获取所有记录.