执行查询然后在内存中过滤结果或执行确切的查询,哪一个更好,为什么?

时间:2016-10-05 18:08:54

标签: mysql sql

假设有一个表Employee(名称,年龄,性别),并且它有超过10000行。我想找出那些名字中包含' nick'他的年龄在18到24岁之间。我有两种选择来搜索结果。一种是执行查询以查找名称中包含' nick'然后在内存中进行过滤。另一种是执行确切的查询并获得最终结果。哪个选项更好,为什么?

1 个答案:

答案 0 :(得分:2)

对于大多数性能问题,答案是“运行您的数据和系统,看看哪个更好。”

在这种情况下,答案显而易见:在数据库中完成工作。这就是数据库的用途。

假设您想将自行车借给住在几英里外的朋友。你可以骑自行车。这就像在数据库中进行查询一样,因为您正在按照设计的方式使用系统。或者,你可以骑自行车。这就像将所有数据返回给应用程序一样,会产生不必要的开销。

我可以继续自行车比喻。就像自行车有齿轮来帮助处理不同的地形一样,数据库具有索引和其他结构,使查询运行得更快。如果不骑自行车,你就会超越这些优势。