0

在我的一个 PHP 站点上,我需要让我的用户能够选择某些行以从站点上的所有搜索结果(查询)中排除。

我应该以哪种方式处理排除项,我应该:

1) 每当用户通过查询登录(或更新)时预编译排除行列表,将列表保存在 Session 变量中,然后简单地添加$query .= " AND userid NOT IN ({$_SESSION['ExclusionList']})"到站点上的每个搜索查询中,

或者

$query .= " AND userid NOT IN (SELECT userid FROM Excluded WHERE excludedBy = '$currentUserID')"2)通过简单地添加到网站上的每个搜索查询,直接在每个查询中直接编译它 ?

方法 1) 似乎更有效,因为我只在用户登录时(或每当他们更新它时)编译列表一次,而不是每次用户在网站上运行搜索查询时都必须编译列表。

你有什么建议,为什么?

4

1 回答 1

1

从技术上讲,这将被称为“缓存”这些值,这不是一个坏主意,前提是列表不会变得太大,或者您$_SESSION最终可能会变得有点重量级。

进行子选择可能非常昂贵,尤其是在大量记录上,因此通常最好缓存它。

于 2012-10-03T16:35:29.510 回答