带有值或嵌套选择查询的IN子句?

时间:2015-03-23 14:38:13

标签: mysql database authorization

我要求我有一点点困惑,需要你提出一些建议。我有用户对象和他有权限的site_ids列表。所以我的疑问是,我是否必须缓存这些权限并在查询的IN中使用它们来执行某些其他操作或不缓存它们,而是使用IN子句中的嵌套查询来获取site_ids? 由于存在内存或数据库访问权限,因此会存在权衡。

感谢。

1 个答案:

答案 0 :(得分:1)

评论时间有点长。

如果我理解正确,你的问题是:

  • 我应该创建复杂的逻辑来将数据从数据库移动到我的应用程序并返回数据库吗?
  • 或者,我应该在数据库中进行所有处理吗?

您应该在数据库中执行所有处理。在不需要时,为什么还要考虑多个查询和应用程序级逻辑呢?

如果你确实需要应用程序中的id,那么在那里有构造查询的参数。值得注意的是,基础数据可能会发生变化,您可能希望为用户提供一致的界面。

MySQL在使用常量列表优化in方面做得很好。除了运行多个查询和进行客户端处理的开销之外,具有许多常量的IN应该具有良好的性能。