Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 加快数据库查询的响应速度_Php_Mysql_Sql - Fatal编程技术网

Php 加快数据库查询的响应速度

Php 加快数据库查询的响应速度,php,mysql,sql,Php,Mysql,Sql,我正在mysql db服务器上使用php运行一个select*fromtable order by date desc查询,该表有很多记录,这会减慢响应时间 那么,有没有办法加快反应速度呢。如果索引是答案,那么我应该索引哪些列。当您有WHERE子句或与已索引的字段进行联接时,索引可以加快搜索速度。在您的情况下,您不会这样做:您选择表中的所有条目。所以使用索引对你没有帮助 您确定需要该表中的所有数据吗?当您以后在PHP中过滤、搜索或聚合这些数据时,您应该研究在SQL中实现这一点的方法,以便数据库向

我正在mysql db服务器上使用php运行一个
select*fromtable order by date desc
查询,该表有很多记录,这会减慢响应时间


那么,有没有办法加快反应速度呢。如果索引是答案,那么我应该索引哪些列。

当您有WHERE子句或与已索引的字段进行联接时,索引可以加快搜索速度。在您的情况下,您不会这样做:您选择表中的所有条目。所以使用索引对你没有帮助


您确定需要该表中的所有数据吗?当您以后在PHP中过滤、搜索或聚合这些数据时,您应该研究在SQL中实现这一点的方法,以便数据库向PHP发送更少的数据。

您需要使用缓存系统。
据我所知,提高应用程序的速度真是太好了,它根本不使用数据库。

简单回答:使用软件无法提高任何速度

原因:您正在选择一个表的全部内容,并且您说这是一个大表

您可以做的是缓存数据,但不使用Memcache,因为它对可以缓存的数据量有限制(每个键1 MB),因此如果您的数据超过此限制,那么祝您好运使用Memcache缓存一个巨大的结果集,而不提出维护键和值的有效方案

索引没有帮助,因为您没有WHERE子句,可能发生的情况是您可以稍微加快ORDERBY子句的速度。在查询之前使用EXPLAIN EXTENDED查看通过网络传输数据花费了多少时间,以及从查询中检索和排序数据花费了多少时间

如果您的应用程序需要大量数据才能正常工作,则您可以选择以下选项:

  • 获得一个更好的服务器,可以更快地推送数据
  • 重新设计您的应用程序,因为如果它需要如此多的数据才能运行,那么在设计时可能没有考虑到效率

    • 优化查询是一个大话题,超出了这个问题的范围

      下面是一些突出显示的内容,它们将增强您选择语句的能力

      • 使用适当的索引
      • 限制记录的数量
      • 使用所需的列名(而不是编写
        select*from table
        use
        select col1,col2 from table
      在mysql中,限制大偏移量的查询并不难 这个用于大偏移量的select语句将很慢,因为它必须处理大数据集

      SELECT * FROM table order by whatever LIMIT m, n;
      
      要优化此查询,这里有一个简单的解决方案

      select A.* from table A 
        inner join (select id from table order by whatever limit m, n) B
        on A.id = B.id
      order by A.whatever
      

      在查询中使用
      limit
      ,并对记录进行分页。您需要每一列吗?不太容易:Hi@rikesh,必须在不分页的情况下显示这些记录,并将所有记录放在一个页面中go@DaveHogan是的,我需要每一篇专栏文章。谢谢你的回答。是的,我需要所有数据,因为它在移动应用程序中使用,我现在不能更改应用程序代码,只有后端。移动应用程序被编码为一次获取所有数据。有可能以不同的方式存储数据吗?那么你所能做的就是购买一台更快的数据库服务器。