我有一个600,000条记录的数据表大约25兆字节。它由4字节密钥索引。
有没有办法在不使用MySQL的情况下使用PHP快速在这样的数据集中找到行?
有问题的网站主要是静态的,只有很少的PHP代码,没有数据库依赖性,因此速度很快。我想添加这些数据而不必使用MySQL。
在C ++中,我将内存映射文件并在其中进行二进制搜索。有没有办法在PHP中做类似的事情?
答案 0 :(得分:1)
我会建议memcachedb或类似的东西。如果您要在PHP中完全处理此问题,则脚本必须读取每个请求的整个文件/数据结构。动态地在合理的时间内完成这项工作是不可能的。
答案 1 :(得分:1)
在C ++中,每当用户想要以不同的方式查看文件时,您是否会停止并启动应用程序,因此加载和卸载文件?可能不是,但这就是php与应用程序和应用程序编程语言的不同之处。
PHP提供了一些工具来帮助您处理环境拆解/构建。这些工具是数据库和/或键控缓存实用程序,如memcache。使用正确的工具来完成正确的工作。
答案 2 :(得分:1)
PHP(至少5.3)应该已经过优化以使用mmap(如果它可用)并且它可能是有利的。因此,您可以使用与C ++一样的策略:
编辑:实际上,它似乎仅在file_get_contents
等其他情况下使用mmap。这应该没关系,但您也可以尝试file_get_contents
。