MYSQL查询了十亿条记录和超时问题

时间:2013-07-14 21:51:31

标签: php mysql sql performance mysqli

所以我有一个MYSQL数据库,其中一个表每秒增长5,000行。我希望这张表能够进入数十亿的记录。我现在在php中有一个查询功能:

 $result =mysqli_query($con, "SELECT * FROM table WHERE  `data`='".$input."' LIMIT 0 , 30");

问题很明显,表越大,查询最新记录所需的时间越长。到了这一点,功能只是超时了。如果我直接从sql运行相同的查询,它会做同样的事情。

是否有更好的方法来查询此表以加快查询时间。是否有可能从最后一条记录开始查询,首先记录并逐步增加以加快速度?

如果有更快的替代方案,我也不会死于使用php请告诉我。

将表拆分为多个表并在多个较小的表上同时运行查询也会更好吗?

先谢谢你。

3 个答案:

答案 0 :(得分:3)

索引在这里非常重要。造成巨大的变化。还要确保它已正确标准化。

另一个更有动力的想法是没有一个大的数据库。但是根据您稍后查询时所知的标准将其分成许多较小的标记。比如,日期,第一个字母等。让这个大数据库一直在增长是不切实际的。它必须分开。

另一个部门可能是将较旧的数据存储在较慢的较大块中。在临时表中保存较新的已使用数据。

答案 1 :(得分:1)

如果你有这么大的表并且你感兴趣的值是“最新的”,你可以使用MySQL partitioning来提高性能。您可以查看更多article

答案 2 :(得分:1)

索引是这里故事的一部分..

尝试通过开始和结束来避免LIMIT。 如果你使用LIMIT 1000000,那么mysql服务器需要在内存中保留1000030条记录,因此浪费资源浪费再次扔掉1000000条记录以保持30条,特别是当mysql在磁盘上制作临时表时,当内存表变为到大...