Sto creando/cambiando una tonnellata di indici su un grande db. Ciò funziona se l'indice esiste già.Drop_existing genera un errore se l'indice non esiste
CREATE UNIQUE CLUSTERED
INDEX [table1_1] ON [dbo].[table1] ([col1], [col2], [col3])
WITH DROP_EXISTING ON [PRIMARY]
Ma se non esistono gli errori.
così ho cambiato il mio script per:
IF EXISTS (SELECT name FROM sysindexes WHERE name = 'table1_1') DROP INDEX [table1].[table1_1]
CREATE UNIQUE CLUSTERED
INDEX [table1_1] ON [dbo].[table1] ([col1], [col2], [col3])
ON [PRIMARY]
Quindi la domanda è sto utilizzando CON DROP_EXISTING sbagliato?
Per motivi di prestazioni, si potrebbe desiderare di if/else in questo modo: Se non esiste indice quindi creare con DROP_EXISTING ELSE creare (senza DROP_EXISTING) –
@ PhilipKelley è vero, ma questo crea un codice pubblicitario. Qualche suggerimento aggiuntivo per gestire questo? – Magier