Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Registrati oggiQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare le funzionalità più recenti, gli aggiornamenti della sicurezza e il supporto tecnico.
Si applica a: SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Database SQL in Microsoft Fabric
Questo articolo descrive come creare, ricompilare o eliminare indici online usando SQL Server Management Studio o Transact-SQL. L'opzione ONLINE
consente l'accesso simultaneo di un utente alla tabella sottostante o ai dati dell'indice cluster e a qualsiasi indice non cluster associato durante l'esecuzione di queste operazioni sugli indici. Durante la ricompilazione di un indice cluster da parte di un utente, ad esempio, tale utente e altri utenti possono continuare ad aggiornare ed eseguire query sui dati sottostanti.
Quando si eseguono operazioni DDL (Data Definition Language) offline, ad esempio la compilazione o la ricompilazione di un indice cluster, queste operazioni contengono blocchi esclusivi (X
) sui dati sottostanti e sugli indici associati. Questo impedisce modifiche e query sui dati sottostanti fino al completamento dell'operazione sull'indice.
Nota
I comandi di ricompilazione dell'indice possono contenere blocchi esclusivi sugli indici cluster dopo l'eliminazione di una colonna di oggetti di grandi dimensioni da una tabella, anche quando vengono eseguiti online.
L'opzione ONLINE
è disponibile nelle istruzioni Transact-SQL seguenti.
UNIQUE
o vincoli di PRIMARY KEY
)Per limitazioni e restrizioni relative alla creazione, alla ricompilazione o all'eliminazione di indici online, vedere Linee guida per le operazioni sugli indici online.
Per utilizzare operazioni sugli indici ripristinabili, è necessario eseguire un'operazione sull'indice online. Per altre informazioni, vedere Considerazioni sull'indice ripristinabile.
Le operazioni online sugli indici non sono disponibili in tutte le edizioni di SQL Server. Per altre informazioni, vedere Edizioni e funzionalità supportate di SQL Server 2022.
Le operazioni sugli indici online sono disponibili nel database SQL di Azure e nell'istanza gestita di SQL di Azure.
È richiesta l'autorizzazione ALTER
per la tabella o la vista.
In Esplora oggetti espandere il database contenente la tabella in cui si desidera ricompilare un indice online.
Espandere la cartella Tabelle .
Espandere la tabella in cui si vuole ricompilare un indice online.
Espandi la cartella Indici.
Usare il menu di scelta rapida per l'indice che si desidera ricostruire online e selezionare Proprietà.
In Selezione paginaselezionare Opzioni.
Selezionare Consenti elaborazione DML online, quindi selezionare True dall'elenco.
Seleziona OK.
Usare il menu di scelta rapida per l'indice che si desidera ricompilare online e selezionare Ricompila.
Nella finestra di dialogo Ricompila indici verificare che nella griglia Indici da ricompilare sia presente l'indice corretto e fare clic su OK.
Nell'esempio seguente viene ricompilato un indice online esistente nel database di esempio AdventureWorks
.
ALTER INDEX AK_Employee_NationalIDNumber
ON HumanResources.Employee
REBUILD WITH (ONLINE = ON);
Nell'esempio seguente viene eliminato un indice cluster online e la tabella risultante (heap) viene spostata nel filegroup NewGroup
tramite la clausola MOVE TO
. Vengono eseguite query sulle viste del catalogo sys.indexes
, sys.tables
e sys.filegroups
per verificare la posizione dell'indice e della tabella nei filegroup prima e dopo lo spostamento.
-- Create a clustered index on the PRIMARY filegroup if the index does not exist.
IF NOT EXISTS (SELECT name FROM sys.indexes WHERE name =
N'AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate')
CREATE UNIQUE CLUSTERED INDEX
AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate
ON Production.BillOfMaterials (ProductAssemblyID, ComponentID,
StartDate)
ON 'PRIMARY';
GO
-- Verify filegroup location of the clustered index.
SELECT t.name AS [Table Name], i.name AS [Index Name], i.type_desc,
i.data_space_id, f.name AS [Filegroup Name]
FROM sys.indexes AS i
JOIN sys.filegroups AS f ON i.data_space_id = f.data_space_id
JOIN sys.tables as t ON i.object_id = t.object_id
AND i.object_id = OBJECT_ID(N'Production.BillOfMaterials','U')
GO
-- Create filegroup NewGroup if it does not exist.
IF NOT EXISTS (SELECT name FROM sys.filegroups
WHERE name = N'NewGroup')
BEGIN
ALTER DATABASE AdventureWorks2022
ADD FILEGROUP NewGroup;
ALTER DATABASE AdventureWorks2022
ADD FILE (NAME = File1,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\File1.ndf')
TO FILEGROUP NewGroup;
END
GO
-- Verify new filegroup
SELECT * from sys.filegroups;
GO
-- Drop the clustered index and move the BillOfMaterials table to
-- the Newgroup filegroup.
-- Set ONLINE = OFF to execute this example on editions other than Enterprise Edition.
DROP INDEX AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate
ON Production.BillOfMaterials
WITH (ONLINE = ON, MOVE TO NewGroup);
GO
-- Verify filegroup location of the moved table.
SELECT t.name AS [Table Name], i.name AS [Index Name], i.type_desc,
i.data_space_id, f.name AS [Filegroup Name]
FROM sys.indexes AS i
JOIN sys.filegroups AS f ON i.data_space_id = f.data_space_id
JOIN sys.tables as t ON i.object_id = t.object_id
AND i.object_id = OBJECT_ID(N'Production.BillOfMaterials','U');
Per altre informazioni, vedere ALTER INDEX (Transact-SQL).
Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Registrati oggiTraining
Modulo
Informazioni su come creare un modello di dati, tabelle, indici, vincoli e usare i tipi di dati con Azure Data Studio.
Certificazione
Microsoft Certified: Azure Database Administrator Associate - Certifications
Amministrare un'infrastruttura di database SQL Server per database relazionali, ibridi, locali e cloud con le offerte di database relazionali Microsoft PaaS.
Documentazione
Linee guida per le operazioni sugli indici online - SQL Server
Linee guida per le operazioni sugli indici online.
ALTER INDEX (Transact-SQL) - SQL Server
Consente di modificare un indice di tabella o di vista esistente, di tipo rowstore, columnstore o XML, tramite la disabilitazione, la ricompilazione o la riorganizzazione dell'indice oppure tramite l'impostazione di opzioni per l'indice.
Funzionamento delle operazioni sugli indici online - SQL Server
Funzionamento delle operazioni sugli indici online