如果索引不存在则创建索引
Posted
技术标签:
【中文标题】如果索引不存在则创建索引【英文标题】: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
和其他一些东西。
【问题讨论】:
【参考方案1】:看看系统表:
https://devzone.advantagedatabase.com/dz/webhelp/Advantage10/devguide_system_tables.htm
特别是有一个表叫system.indexes
:
https://devzone.advantagedatabase.com/dz/webhelp/Advantage10/master_system_indexes.htm
【讨论】:
【参考方案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]);
【讨论】:
以上是关于如果索引不存在则创建索引的主要内容,如果未能解决你的问题,请参考以下文章