1

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

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

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

有没有更好的方法来查询这个表来加快查询时间。是否可以从最后一条记录开始查询,第一条记录并在两者之间递增以加快速度?

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

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

4

3 回答 3

3

索引在这里非常重要。有很大的不同。还要确保它正确标准化。

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

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

于 2013-07-14T21:58:13.880 回答
1

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

于 2013-07-14T21:58:44.410 回答
1

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

尽量避免 LIMIT 的开头和结尾。如果您使用 LIMIT 1000000, 30 mysql 服务器需要在内存中保留 1000030 条记录,因此再次丢弃 1000000 条记录以保留 30 非常浪费资源,特别是当 mysql 应该在磁盘上创建临时表时,当内存表变为到大...

于 2013-08-10T19:20:45.567 回答