0

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

select ... from table1
union
select ... from table2
...
select ... from tableN

速度是这个项目的重中之重。创建一个视图来执行连接然后只查询这个视图(从而对供应商数据库进行更改)或者只从我们的应用程序运行联合语句会更快吗?

我知道更改供应商数据库所涉及的潜在问题,因此我正在寻找反馈。

4

2 回答 2

1

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

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

于 2010-06-17T17:52:02.590 回答
1

当谈到供应商数据库时,我会非常犹豫对任何现有表进行更改。添加视图之类的东西似乎更安全一些,因为您是唯一会使用它的人。我对视图最大的担忧是,如果您从供应商那里获得了对数据库进行更改的更新,那么您可能会丢失视图。

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

就个人而言,在将逻辑放入应用程序与将其放入数据库时​​,我倾向于使用数据库。根据我的经验,这些类型的更改更易于部署和维护。

如果我处于你的情况,我会继续创建视图,如果它能让你的生活更轻松。但同样,不要指望性能提升。

于 2010-06-17T18:02:55.933 回答