在我的查询中,我希望获得同一城市的所有用户。最终用户也可以使用此查询,以便他们可以查看同一城市的其他用户。 我查询用户表,以便检索甚至已经运行查询的所有用户。
现在有两个选项:
我添加一个条件来查询user.id!=(查询运行用户的用户ID)
或者在显示查询结果并删除正在运行查询的用户之前处理查询结果。
我使用的是否重要或有任何相当大的影响?
注意 - 我的主要查询并不像查找同一个城市那样简单,而是使用3个表连接来访问用户想要显示的数据。为了简洁,我把城市放在这里。
答案 0 :(得分:1)
我讨厌成为一个标准答案但是......用两个选项进行一些性能测试并选择更快的那个。如果差异不确定,请选择一个对未来开发人员来说更容易的差异。我猜想将它放在查询中对开发人员来说更容易,因为结果可能会在多个地方使用,并且在使用时最好处理代码检查(因此复制每次使用的检查) )。
答案 1 :(得分:1)
这取决于,但根据我的一般经验,如果在数据库中添加代码查询和进入数据库过滤的参数会导致数据显着减少,这通常意味着数据库实际上能够使用这些东西来在内部使用较小的工作集(不仅仅是通过电线)制定更好的执行计划,通常更好。
例如,在我帮助某人的最近一次查询中,可以编写查询以返回所有朋友对。但是,从应用程序的角度来看,在任何特定页面上只需要特定人员的朋友,不需要返回刚刚丢弃的额外数据,并且查询计划本身也不同,因为会有一个较小的集合在一个交叉连接的一侧。无论如何,我的观点是,通常情况下,您最好尽可能多地为数据库提供信息并让它在那里工作。
答案 2 :(得分:0)
您可以使用第一个选项,因为3个表连接+条件不是那么大。
答案 3 :(得分:0)
根据提供的信息,选择哪个选项不应该有任何明显的区别 - 第一个选项可能稍微偏好,因为它需要从数据库中检索的数据略少。