У меня есть SQL-запрос с дельта-сценарием, где я должен проверить, существует ли определенный индекс, если нет, то создать его.
например, структура таблицы:
tableA
Col1 int
Col2 varchar
Col3 varchar
Col4 DateTime
Изапрос:
IF EXISTS (SELECT 1
FROM sys.indexes AS i
INNER JOIN sys.index_columns AS ic
ON i.object_id = ic.object_id
AND i.index_id = ic.index_id
WHERE i.object_id =OBJECT_ID('dbo.tableA')
AND COL_NAME(ic.object_id,ic.column_id) = 'Col2' )
BEGIN
PRINT 'Index Exists!'
END
ELSE
BEGIN
PRINT 'Nonclustered does not Exists!'
IF NOT EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_tableA_Col2_Col3')
BEGIN
PRINT 'Creating index on tableA'
CREATE NONCLUSTERED INDEX [IX_tableA_Col2_Col3] ON [dbo].[tableA]
(
[Col2] ASC,
[Col3] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
END
END
Там запрос может проверить, есть ли индекс на Col2
или нет, но здесь я хочу достичь, это проверить, есть ли индекс, созданный на Col2
и Col3
если нет, то создайте.
Как я могу это сделать?