首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php:会话与数据库

php:会话与数据库
EN

Stack Overflow用户
提问于 2009-07-16 23:24:23
回答 3查看 4.9K关注 0票数 8

我有一个从数据库中检索其成员(或多或少10个成员)的类。

我的问题是:每次从db (MySQL)中获取它们,只在会话的数组中保留一个ID,还是直接将它们存储在会话的数组中,效率更高?

性能方面的差异有这么大吗?(假设数据库有100.000行)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-17 01:19:44

考虑到您无论如何都会在会话中存储一个ID,因此会话最有意义。执行session_start()将加载会话信息,因此在此之后是否加载了1个或10个项在很大程度上是无关紧要的(除非它们真的很大,但这在任何情况下都是一个问题)。

因此,请继续进行会话。

如果您非常关心速度,请使用内存中的缓存,如APC或memcache。担心来自文件系统或数据库的10个项目的速度会让人分心。差异将是如此之小,以至于无关紧要。

注意:以上假设有两件事:

  1. 查询是可执行的(从100k中检索10行应该可以在0.1秒内完成);并且
  2. 您正在执行的是一次查询,而不是10行。
票数 12
EN

Stack Overflow用户

发布于 2009-07-16 23:27:48

这取决于你所说的“高效”是什么意思。一个人的时间效率,一个人的磁盘空间效率。而且很难将这两者相互比较,除非您的需求处于这两个极端的两端。您可能只需抛硬币,测量随时间推移的性能,并根据观察到的任何问题进行调整。

过早优化是万恶之源。

票数 8
EN

Stack Overflow用户

发布于 2016-10-28 04:18:11

如果正确设置了索引,那么表中的行是100,000行还是10,000,000行都是无关紧要的。

尽管如此,PHP默认的基于文件的会话绝对比从数据库中检索要快,但只有在站点使用率非常高时,例如每秒数百或数千次查询,您才会注意到不同之处。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1140808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档