【问题标题】:Creating index if index doesn't exist如果索引不存在则创建索引
【发布时间】:2012-02-22 13:20:44
【问题描述】:

如果使用 sql 查询不存在优势数据库服务器,我在创建索引时遇到问题。

我的查询如下所示:

 If not Exists(<SELECT Query for amount of indizes for one column>) then 
 Create Index Test on Tablename (No); endif

所以我不使用 FullTextSearchIndizes,因为它是一个整数字段。否则它看起来像这样:

 If not Exists(SELECT * FROM tablename WHERE CONTAINS( * , 'Test' )) then 
 Create Index Test on Tablename (Name) Content; endif     

所以,我唯一的问题是如何获取索引。我在其他 DBMS 中阅读过,您可以使用 sys.indexes 和其他一些东西。

【问题讨论】:

    标签: sql indexing advantage-database-server


    【解决方案1】:
    【解决方案2】:

    使用系统命令尝试类似的操作。这是我在 Advantage 数据库上使用的一个工作示例:

    IF (SELECT Name FROM system.indexes
       WHERE Index_File_Name = 'GLDept.adi'
       AND Index_Expression = 'DeptNumber') IS NULL
    THEN
       EXECUTE PROCEDURE sp_CreateIndex90( 
       'GLDept',
       'GLDept.adi',
       'DEPTNUMBER',
       'DeptNumber',
       '',
       2051,
       512,
       '' );
    END IF;
    

    【讨论】:

      【解决方案3】:

      有一个简单的方法可以做到这一点:

      IF NOT EXISTS (SELECT name FROM sysindexes WHERE name = 'IX_MyTable_MyColumn') 
          CREATE INDEX [IX_MyTable_MyColumn] ON [dbo].[MyTable] ([MyColumn]);
      

      【讨论】:

        猜你喜欢
        • 2021-05-02
        • 2013-09-08
        • 2023-02-06
        • 2017-10-15
        • 1970-01-01
        • 2013-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多