我有一个从数据库中检索其成员(或多或少10个成员)的类。
我的问题是:每次从db(MySQL)获取它们是否更有效,只在会话的数组中留下一个ID或直接将它们存储在会话的数组中?
性能方面的差异是如此之大? (给出一个说100.000行的数据库)
答案 0 :(得分:11)
考虑到你在会话中存储了一个ID,会话最有意义。执行session_start()会加载您的会话信息,因此无论您是否已经加载了1个或10个项目,这在很大程度上是无关紧要的(除非它们非常大但在任何情况下都会成为问题)。
坚持会议。
如果您真的关心速度,请使用内存缓存,如APC或memcache。担心来自文件系统或数据库的10个项目的速度令人分心。差别很小,无关紧要。
注意:以上假设有两件事:
答案 1 :(得分:8)
取决于'有效'的意思。一个人的时间效率,一个磁盘空间效率。除非你的要求处于频谱的任何一端,否则很难将两者相互判断。您可能只需要掷硬币,测量一段时间内的性能,并根据观察到的任何问题进行调整。
过早优化是其根源 万恶之物。
答案 2 :(得分:2)
如果正确设置了索引,那么表中是否有100,000行或10,000,000行是无关紧要的。
虽然说PHP的基于默认文件的会话肯定比从数据库中检索要快,但在你的网站使用频繁之前你不会注意到差异,例如每秒5000多个查询。