我们有一个供应商提供的数据库,到目前为止,我已经能够避免对数据库结构进行任何更改。我们很快将直接在表中直接查询相关项目。为了提取我们需要的所有数据,我们将需要创建一个具有多个联合的大型SQL语句。 通用标签

速度是此项目的最高优先级。创建视图进行联接然后只查询该视图(从而对供应商数据库进行更改)还是只运行应用程序中的并集语句会更快吗?

我知道对供应商数据库进行更改所涉及的潜在问题,因此了解我为什么寻求反馈。

有帮助吗?

解决方案

在谈到供应商数据库时,我会非常犹豫地更改任何现有表。添加类似视图的内容似乎更安全一些,因为您是唯一将使用它的视图。我对视图的最大担心是,如果您从供应商处获得了对数据库进行更改的更新,则可能会丢失视图。

除非您使用索引视图,否则我认为使用该视图不会带来任何性能提升。不幸的是,您不能在使用联合创建的视图上创建索引(至少在SQL Server中)。

就将逻辑放入应用程序还是将其放入数据库而言,我个人更倾向于DB。以我的经验,这些类型的更改更易于部署和维护。

如果我在您的情况下,我会继续创建视图,以使您的生活更轻松。但同样,不要指望性能提高。

其他提示

没有视图会更快(开发时间除外)。

如果可以使用UNION ALL,那就更快了。UNION查找重复的记录,并将其从最终结果中删除。如果您知道设计中的记录(例如每个表用于不同的客户端或每个表具有不同的日期范围)不能重复,那么UNION ALL不会尝试区分结果集,因此运行速度更快。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top