我必须通过以下方式从 .NET 从 DB2 数据库中获取数据:
- 连接 5 个表 2 内连接 3 左外连接
- 数据必须写入文本文件。因此必须使用诸如 LPAD/RPAD、substr 等格式化函数。
- 检索到的数据约为 100000 行
我打算创建一个视图,以便应用程序摆脱连接,并且我只在视图中获得所需的列。我想知道如果数据的格式也应该移到视图的定义中?所以在应用程序中我只会执行
从视图中选择 *
请指教
谢谢
从数据库引擎的角度来看,无论是应用程序提交带有连接、文本函数等的查询,还是所有这些都包含在一个视图中并且应用程序执行一个简单的select * from view
. DB2 以完全相同的方式编译查询。
使用视图的唯一“优势”是为应用程序开发人员提供便利。当然,将 SQL 语句放入视图的缺点是,如果需求发生变化,您将不得不修改视图。
至于在视图中包含文本格式:如果此视图仅存在以支持这个单一应用程序(并且您只是为了方便而使用它),那么在视图定义中包含格式可能是有意义的。但是,如果其他应用程序可能需要视图(但不是文本格式),那么在查询中保留视图中的格式是更好的选择。
作为 DBA,我建议文本格式化的最佳位置是在您的应用程序代码中。使用(或等效)编写格式化字符串printf()
是应用程序通常非常擅长的事情。