2010-10-15 95 views
0

假设我们有collumns(A,B,C) 我们希望基于对从collumn进行计算:C一个标准来搜索这个表...等参数SQL和搜索查询计算值

表因为计算是复杂的,不能用sql查询表示... 我该怎么办?在应用程序级别进行过滤?

+1

你在使用什么服务器? – 2010-10-15 09:43:58

+1

在选择行时,您是否可以不将复杂的计算结果与A,B和C一起存储,而不是计算结果? – 2010-10-15 09:44:05

+0

指定你的数据库,因为可以在SQL中完成相当复杂的事情(例如在postgres中,将python,perl,tcl或pl与SQL混合起来很容易)。 – Unreason 2010-10-15 10:50:23

回答

1

没有银弹这里的where子句。

优点

您可以在数据库级别相当复杂的计算,在数据库级做的优点是在RDBMS更接近数据和传送数据来回从磁盘,通过RDBMS通过网络到应用程序通常比RDBMS(执行SQL时)中的计算更加昂贵,并且仅向应用程序发送结果。

又亲是集中逻辑使得系统维护变得简单,但是...

缺点

...这取决于你所选择的数据库,你可能不会有多种选择的RDBMS层中可用的编程语言,因此对于更复杂的事情,在某些过程化SQL变体中编写您的任务可能会非常麻烦。

不在RDBMS级别执行此操作的其他原因是,如果计算是资源密集型(cpu,内存;认为O(n!)问题等),并且输出大小与输入大小相当。在这种情况下,将数据传送到应用程序端可能会有助于减轻数据库服务器资源(在某种意义上说,您可以分配计算任务;但是,如果应用程序服务器与数据库服务器位于相同的硬件上,则可能无法获得任何内容,除非您可以一路推到客户端;看看三层和多层架构)。

+0

我正在使用的Microsoft SQL ...我如何使用SQL Server的编程语言? – GorillaApe 2010-10-15 11:21:58

+0

@Parhs,你可以从http://www.aspfree.com/c/a/MS-SQL-Server/Implementing-Managed-code-in-SQL-Server-2005-using-Visual-Studio-NET-开始, 2005 / – Unreason 2010-10-15 11:31:35

0

另一种可能是创建一个为你做数学题对数据库的函数/存储过程,然后调用它的查询