当前位置: 首页 > 知识库问答 >
问题:

MySql查询需要很长时间PHP

顾烨磊
2023-03-14

我有以下PHP代码在Laravel正在执行一个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

解释扩展的结果:

共有2个答案

陈寒
2023-03-14

是否有一次显示7000行的情况?若要显示大量数据,基本上在用户请求结果时对列表进行分页。

因为没有人可以一次看到7000个数据^^;;考虑从数据库动态加载数据。

http://laravel.com/docs/5.1/pagination

宣意致
2023-03-14

Shivam Paw和我通过聊天完成了这项工作。事实证明,MySQL查询本身毕竟是快速的。然而,我们确定

print str_repeat('a', $size_of_mysql_result_set);

速度非常慢(大小约为2.4米)。因此,问题要么在于网络I/O(可能是主机提供商节流阀),要么在于PHP和Nginx之间在提供大量PHP输出方面存在一些问题。

更新:

目前的一些选择:

  • 重新设计应用程序,使其不会一次获取2MB。也许一开始就抓取你需要立即显示的内容,然后在后台取回其余的内容——或者更好,只有在用户真正需要时才取回
  • 在Nginx中启用压缩(https://rtcamp.com/tutorials/nginx/enable-gzip/)
  • 与你的主机提供商协商一个更好的带宽协议,或者找一个不同的提供商
 类似资料:
  • 我知道要冬眠。我有一个sql语句 我尝试用createCriteria和HQL实现它。 HQL: 问题是,此HQL的执行时间延长了10倍。并执行许多不必要的查询。我尝试使用注释字符串进行转换,它有了一些改进,但仍然比createCriteria查询长5倍,此外,我无法进行此转换 <代码>列表 版本数据防御

  • 我的Mongo Collection有大约2000个文档。当使用MongoTemplate find()方法和空查询(即我需要集合中的所有文档)和实体类、集合名称时,以列表的形式返回数据需要一分钟以上。有人能帮我让查询返回更快吗??下面是我正在使用的查询。

  • 没有一个参数帮助我们在较短的时间内解决查询。

  • 我有一个查询,我用了很长时间才找到。我在一个有500k行的表的单个分区上运行它。 查询如下所示: 我将其设置为,因此查询返回0行。 此查询大约需要30秒(如果我使用,则需要一分钟)。 当我运行完全相同的查询但使用时,需要2秒。 是什么原因导致查询在使用选择列时花费很长时间,而在使用选择计数(列)时不花费时间? 这是解释的问题 *项目[col0#607] -*过滤器(isnotnull(col1#6

  • 我使用javamail通过IMAP协议从exchage帐户读取邮件。这些邮件是纯格式的,内容是XML。 几乎所有这些邮件的大小都很短(通常小于100Kb)。然而,有时我不得不处理大型邮件(大约10Mb-15Mb)。例如,昨天我收到一封13Mb大小的电子邮件。仅仅读它就花了50多分钟。这正常吗?有没有办法提高它的性能?代码是: 花费如此长时间的方法是。我做错了什么?有什么提示吗? 非常感谢,我的英语

  • 问题内容: 我有一个以datetime为参数的查询,我们观察到的是,如果通过变量提供datetime参数,则执行查询的时间比直接对参数进行硬编码要多2 -3倍,是否有任何原因或解决方案?对此 以下查询大约需要5分钟才能返回结果 虽然作为 它会在10到20秒内返回 我并不总是希望在列上使用索引进行搜索。 按照kevchadders的建议,我看到执行计划有很大的不同。使用日期变量的查询正在执行聚集索引