向供应商提供的数据库添加视图和性能
-
28-09-2019 - |
题
我们有一个供应商提供的数据库,到目前为止,我已经能够避免对数据库结构进行任何更改。我们很快将直接在表中直接查询相关项目。为了提取我们需要的所有数据,我们将需要创建一个具有多个联合的大型SQL语句。 通用标签
速度是此项目的最高优先级。创建视图进行联接然后只查询该视图(从而对供应商数据库进行更改)还是只运行应用程序中的并集语句会更快吗?
我知道对供应商数据库进行更改所涉及的潜在问题,因此了解我为什么寻求反馈。
解决方案
在谈到供应商数据库时,我会非常犹豫地更改任何现有表。添加类似视图的内容似乎更安全一些,因为您是唯一将使用它的视图。我对视图的最大担心是,如果您从供应商处获得了对数据库进行更改的更新,则可能会丢失视图。
除非您使用索引视图,否则我认为使用该视图不会带来任何性能提升。不幸的是,您不能在使用联合创建的视图上创建索引(至少在SQL Server中)。
就将逻辑放入应用程序还是将其放入数据库而言,我个人更倾向于DB。以我的经验,这些类型的更改更易于部署和维护。
如果我在您的情况下,我会继续创建视图,以使您的生活更轻松。但同样,不要指望性能提高。
其他提示
没有视图会更快(开发时间除外)。
如果可以使用UNION ALL,那就更快了。UNION查找重复的记录,并将其从最终结果中删除。如果您知道设计中的记录(例如每个表用于不同的客户端或每个表具有不同的日期范围)不能重复,那么UNION ALL不会尝试区分结果集,因此运行速度更快。
不隶属于 StackOverflow