通常的做法是在代码中进一步操作查询结果

时间:2010-07-27 21:54:36

标签: sql

我对编程或编写数据库查询的经验不是很熟悉,而且我似乎依赖于对数据库结果的进一步操作,而不是花时间编写一个更完整的查询来实现我的最终目标。

事实上,在某些情况下,我通过组合列上的值和删除行来完全改变结果的性质。在循环中的代码中操作似乎更容易,而不是编写更复杂的查询。

当然,大多数时候我都可以编写查询,然后从服务器返回结果,我确切地想要使用它。但是在某些情况下我会运行结果进行进一步过滤,因为我只是不知道如何在sql中执行它,但编码看起来非常简单。

4 个答案:

答案 0 :(得分:3)

这取决于。通常,您应该让数据库做数据库擅长的事情 - 过滤,排序和连接数据。复杂的查询后数据(业务逻辑)转换通常应该在应用程序代码中进行,而不是在查询中进行,特别是因为调试这些东西在SQL中确实很糟糕,但在应用程序代码中相对没有痛苦。

如果您完全确信您的数据集总是非常小(假设...少于几百条记录)并且您的操作总是相当简单,那么在您的应用程序代码而不是SQL中进行操作将会可能对整体性能或可维护性没有任何影响。

另一方面,如果你的数据集有可能在某一天变得非常大(你应该测试一下 - 用虚拟数据填充你的表来测试这个!)然后你冒着编写应用程序代码的风险难以忍受的笨重,可能会使用大量的内存来做数据库为你做得更好的事情。此时,您可能需要查看数据库与应用程序代码相比可以更有效地执行哪些操作,并尽可能适当地划分工作负载。这样做需要对您正在使用的数据和操作进行测试和分析。

最后的答案? 根据您的需求决定如何适当地分割数据库服务器(在SQL中)可以有效完成的工作,并且可以在应用程序代码中高效,干净地完成。

答案 1 :(得分:1)

这取决于这些行动的性质。 SQL不适用于无法在关系查询中描述的过程计算。但是,当您处理大型数据集时,必须注意不要获取太多数据以便进一步处理到客户端,并尽可能在服务器上处理它。

答案 2 :(得分:1)

一般情况下,您应该在sql中进行数据操作,但要尽量避免根据业务逻辑操作数据,因为它会使测试变得非常困难并且可能成为错误的来源。

答案 3 :(得分:0)

IMO,尽可能少地操作代码。通常,您可以使查询非常接近您想要的。但是,如果你不能,在代码中操作数据本身并不是一件坏事。