【问题标题】:Why is it not allowed to use UNION in an Indexed View为什么不允许在索引视图中使用 UNION
【发布时间】:2013-07-11 14:30:41
【问题描述】:

根据question/answerMSDN documentation,在设计索引视图时不能使用 UNION 关键字。

但是为什么这在技术上对 DBMS 来说是个问题?

在这种情况下,允许在 VUnion(ID) 上添加索引可能非常有用:

CREATE TABLE T1 (ID INT, Name NVARCHAR(100))
CREATE TABLE T2 (ID INT, Info NVARCHAR(1000))

CREATE VIEW VUnion
AS
SELECT ID FROM T1
    UNION
SELECT ID FROM T2
END

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:

    我无法回答“为什么”的技术性问题,可能只有 SQL-Server 项目的 Microsoft 开发人员才能完全阐明这一点。

    但是你为什么没有另一张桌子,比如T0,它将容纳两张桌子中的任何一张中的所有IDs?你甚至可以有外键约束,来自T1T2,引用T0 表。

    当然,这意味着您在 2 个表上的插入和删除过程需要额外的工作,但问题已经解决:您将在 T0 (id) 上拥有主键,这意味着它会自动建立一个索引。

    【讨论】:

    • 这就是我会做的。使用触发器或自定义精心修剪的存储过程。对于这样一个简单的目标来说,这似乎有点矫枉过正。但是当我断言“simple”时,我显然会错过一些东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-23
    • 2016-11-22
    • 1970-01-01
    • 2017-12-10
    • 2014-09-13
    相关资源
    最近更新 更多