我有一个表,用于存储所有客户的特定更新。
一些示例表:
record_id |客户 ID |单位 ID |时间戳|数据1 |数据2 |数据3 |数据4 |更多
当我创建应用程序时,我没有意识到这个表会增长多少——目前我在 1 个月内拥有超过 1000 万条记录。当 php 由于花费的时间而停止执行时,我遇到了问题。某些查询会根据 time_stamp
+ customer_id
+ unit_id
生成 top-1 结果
您建议如何处理此类问题?例如,我可以为每个客户创建新表,尽管我认为这不是一个好的解决方案。
我脑子里没有好的解决方案。
最佳答案
如果您在云端(您需要在服务器和数据库之间移动数据),请忽略。
将所有逻辑移至服务器
最快的查询是 PRIMARY
的 SELECT
WHERE
。无论您的数据库有多大,它都会以 1 行表的速度返回(只要您的硬件不失衡)。
我无法确切地知道您正在对查询执行什么操作,但首先将所有排序和限制数据下载到 PHP 中。获得所需内容后,直接在 record_id
上 SELECT
数据(我假设这是您的 PRIMARY
>).
看起来您的按需数据的计算量相当大且巨大,因此我建议使用更快的语言。 http://blog.famzah.net/2010/07/01/cpp-vs-python-vs-perl-vs-php-performance-benchmark/
此外,当您开始在服务器而不是数据库上进行排序和限制时,您可以开始识别快捷方式以进一步加快速度。
这就是服务器的用途。
关于php - 如何进行数百万数据选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14887265/