sql - MS Access 索引 View

标签 sql database ms-access

是否可以在 Ms Access View 上添加索引?

我正在尝试运行此查询:

CREATE INDEX MyCustomViewIndex ON [MyView] (MyColumn) WITH DISALLOW NULL

我收到此错误消息。

Cannot execute data definition statements on linked data sources.

有什么建议吗?

问候, 亚历克斯

编辑:

我的 View 定义:

create view MyView as SELECT TableA.Field1, MyUnionQuery.Field2
FROM TableA, MyUnionQuery 

MyUnionQuery 定义:

Select * from ViewX
UNION select * from ViewY

所有表都在同一个MDB文件中

最佳答案

与往常一样,Access(ACE、Jet,等等)documentation含糊不清:它谈论“表”,当然 VIEW 是“查看的表”,但我认为在这种情况下它特指“基表”。我强烈怀疑 Access VIEW 不支持索引。

当我尝试使用 SQL DDL 创建一个时,我也收到错误“无法在链接的数据源上执行数据定义语句”。下面是一些用于重现错误的 VBA 代码(在临时文件夹中创建一个新的 .mdb,无需引用,只需粘贴到 VBA 代码模块中,例如在 Excel 中):

Sub NoIndexedViews()

  On Error Resume Next
  Kill Environ$("temp") & "\DropMe.mdb"
  On Error GoTo 0

  Dim cat
  Set cat = CreateObject("ADOX.Catalog")
  With cat
    .Create _
        "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & _
        Environ$("temp") & "\DropMe.mdb"
    With .ActiveConnection

      Dim Sql As String
      Sql = _
      "CREATE TABLE T (col1 INTEGER);"
      .Execute Sql

      Sql = _
      "CREATE VIEW V (col1) AS SELECT col1 FROM T;"
      .Execute Sql

      On Error Resume Next

      Sql = _
      "CREATE INDEX idx ON V (col1) WITH DISALLOW NULL"
      .Execute Sql

      MsgBox Err.Description

    End With
    Set .ActiveConnection = Nothing
  End With
End Sub

我的 .mdb 中没有任何链接的数据源,因此我得出结论,显示的错误是虚假且具有误导性的。但事实是,无法在 Access VIEW 上创建索引。

关于sql - MS Access 索引 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5951950/

相关文章:

mysql - 重置 auto_increment 是否会重新订购 ID?

mysql 查询到期日期和现在日期之间的 datediff

mysql - 触发以跟踪 MySQL 数据库中的更改

java - 为什么我的 getColumnIndex() 返回 -1?

mysql - 我想在具有整数名称的属性中使用聚合函数

ms-access - 在 Ms Access 2010 模板中看不到设计 View

c# - 使用 C# 而不是 VB6 自动化 Microsoft Access

mysql - 比较MySQL表中同一列的属性

ms-access - “'的错误编号是什么?数据库引擎无法锁定表?

sql - 在oracle中创建重复表时出错