[英]MySql Query Takes A Long Time PHP
我在Laravel中有以下PHP代碼正在執行MySql查詢:
DB::statement(DB::raw("SET @rownum = 0"));
$sql = "@rownum := @rownum+1 AS rank, id, clanid, name, location, level, exp, warslost, warstied, warwinpercent, warswon, playercount, score";
$clan = Clans::orderBy('clanid', 'asc')
->selectRaw($sql)
->take(7000)
->get();
該查詢需要很長時間才能執行。
我在要排序的列以及其他查詢的其他列上都有索引。
我該怎么辦?
更新:
執行查詢:
SET @rownum = 0
select @rownum := @rownum+1 AS rank, id, clanid, name, location, level, exp, warslost, warstied, warwinpercent, warswon, playercount, score from `clans` order by `clanid` asc limit 7000
EXPLAIN EXTENDED
結果:
我和Shivam Paw通過聊天進行了這項工作。 事實證明,畢竟MySQL查詢本身是快速的。 但是,我們確定
print str_repeat('a', $size_of_mysql_result_set);
速度非常慢(大小約為240萬)。 因此,問題可能出在網絡I / O(可能是托管服務提供商的節流)中,或者是PHP和Nginx之間在為PHP提供大量輸出方面存在一些問題。
更新:
此時的一些選項:
是否有任何情況一次顯示7000行? 如果要顯示大量數據,則在用戶請求結果時基本上是分頁列表。
因為沒有人可以一次看到7000個數據^^ ;; 考慮從數據庫動態加載數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.