SQL和搜索查询计算的值

时间:2010-10-15 09:41:21

标签: sql sql-server filter

假设我们有一个带有列的表(A,B,C) 我们希望根据从collumn C ...和其他参数

计算的标准来搜索此表

因为计算很复杂而且无法在sql查询中表示... 我该怎么办?在应用程序级别进行过滤?

2 个答案:

答案 0 :(得分:1)

这里没有银弹。

<强>赞成

您可以在数据库级别进行非常复杂的计算,在数据库级别进行此操作的优点是RDBMS更接近数据并从磁盘,通过RDBMS,通过网络来回传输数据,通常是应用程序比在RDBMS(执行SQL)中进行计算更昂贵,并且仅将结果发送给应用程序。

另一位专业人士认为,集中逻辑可以使系统更易于维护,但是......

<强>缺点

...根据您选择的数据库,您可能没有RDBMS层中可用的各种编程语言,因此对于更复杂的事情,在某些过程SQL变体中编写任务可能会非常尴尬。

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

答案 1 :(得分:0)

另一种方法是在数据库上创建一个函数/存储过程,为您进行数学运算,然后在查询的where子句中调用它