簡體   English   中英

為什么phpmyadmin會比mysql命令行快得多?

[英]Why would phpmyadmin be significantly faster than the mysql command line?

一切都在數據庫所在的同一台計算機上運行。 這些查詢以不同的方式執行相同的操作。 我正在使用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命令行中卻沒有?

諸如phpMyAdmin之類的前端工具通常在LIMIT子句中裝訂,以便對結果進行分頁,而不會使瀏覽器或應用程序在大型表上崩潰。 如果查詢受到更多限制,則該查詢可能返回數百萬條記錄,並且這樣做會花費大量時間,因此查詢運行速度會更快。

將有限的查詢與完整的查詢進行比較並不真正公平,檢索時間將大不相同。 檢查兩個工具都在獲取所有記錄。

根據您使用的存儲引擎,很可能是從數據緩存而非查詢緩存加載數據。 時間差太大,如果您清理緩存並再次運行查詢,您會注意到時差

當我將數據上傳並插入到現有表中時,只是對大約1800萬條記錄的常規簡單插入語句,我認為這很大程度上取決於您的設置和硬件。 對phpmyadmin進行微調以使其在硬件上獲得最佳性能,我花了一些時間才能遠程完成該工作,因此決定在服務器中以簡單的命令行上傳。 Phpmyadmin,一次中斷約500行,並且確實一次又一次地發送查詢,因此連接不會超時。 它按塊進行下載和上傳。 盡管phpmyadmin花費了大約10分鍾以上的時間來完成這項工作,但命令行是中間的。

無論讀取和上傳相同的SQL導入文件花了什么時間,phpmyadmin都比超時慢了好幾倍。 它與很多因素有關,例如內存和最大變量等php.ini設置,http服務器設置(apache設置與帶有php7-fastcgi參數的nginx等等)甚至是php版本也很重要,因為phpmyadmin可以完美地與某些版本,有時無法與其他人一起使用。 如果您要處理大量數據,最好從命令行使用直接轉儲。 phpmyadmin非常適合詳細信息,少量導入和導出以及快速修復,但是瀏覽器位於中間,因此我想直接數據輸入輸出總是更好,更快。 因此,要回答您的問題,涉及設置,硬件和您正在做的工作以及如何做。 那是我的卑鄙建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM