【问题标题】:Creating bitmap index- ora-00921创建位图索引-ora-00921
【发布时间】:2020-08-22 18:02:21
【问题描述】:

我正在尝试创建位图索引。我的代码如下:

CREATE BITMAP INDEX citizen_idx
ON profiles (contracts.citizenID)
FROM profiles JOIN contracts
USING (citizenID) ;

我收到以下错误:

ORA-00921:SQL 命令意外结束

有人知道怎么回事吗?谢谢!

【问题讨论】:

    标签: sql oracle indexing bitmap


    【解决方案1】:

    我没有你的桌子,所以我即兴创作。基本上,你的语法是错误的。不要使用显式的JOIN

    SQL> CREATE TABLE profiles (citizenid NUMBER);
    
    Table created.
    
    SQL> CREATE TABLE contracts
      2  (
      3     citizenid   NUMBER PRIMARY KEY,
      4     contractid  NUMBER
      5  );
    
    Table created.
    
    SQL> CREATE BITMAP INDEX idx
      2     ON profiles (p.citizenid)
      3     FROM profiles p, contracts c
      4     WHERE c.citizenid = p.citizenid;
    
    Index created.
    
    SQL>
    

    【讨论】:

    • 非常感谢您的帮助!我的教授告诉我们使用 JOIN... 现在我可以看到它不正确
    • 不客气。如果教授的意思是“加入”(作为一个术语),那么他们是对的,因为 - 尽管 oldfashioned,这仍然是一个 join。如果他们考虑明确使用 JOIN 关键字,是的 - 那是错误的。
    【解决方案2】:

    您不能在 BITMAP 连接索引中使用 ANSI JOIN 语法。这个link中提到了

    您可以使用下面的旧语法创建相同的索引

          CREATE BITMAP INDEX citizen_idx
          ON profiles (contracts.citizenID)
          FROM profiles,contracts
          where profiles.citizenID=contracts.citizenID;
    

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 2018-01-30
    • 2015-03-21
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多