Changer et trouver des choses dans une base de données contenant quelques dizaines de tables avec environ un demi-million de lignes dans les grands que je cours dans les délais d'expiration assez souvent.SQL Timeout et les indices
Certains de ces délais d'attente ne sont pas compris. Par exemple, je suis arrivé ce tableau:
CREATE TABLE dbo.[VPI_APO]
(
[Key] bigint IDENTITY(1,1) NOT NULL CONSTRAINT [PK_VPI_APO] PRIMARY KEY,
[PZN] nvarchar(7) NOT NULL,
[Key_INB] nvarchar(5) NOT NULL,
) ON [PRIMARY]
GO
ALTER TABLE dbo.[VPI_APO] ADD CONSTRAINT [IX_VPI_APOKey_INB] UNIQUE NONCLUSTERED
(
[PZN],
[Key_INB]
) ON [PRIMARY]
GO
Je reçois souvent des délais d'attente lorsque je recherche un élément dans ce tableau comme celui-ci (lors de l'insertion des volumes élevés d'articles):
SELECT [Key] FROM dbo.[VPI_APO] WHERE ([PZN] = @Search1) AND ([Key_INB] = @Search2)
Ces délais d'attente lors de la recherche sur la Des contraintes uniques arrivent assez souvent. Je m'attendais à ce que les contraintes uniques aient les mêmes avantages que les indices, me trompais-je? Ai-je besoin d'un index sur ces champs aussi?
Ou devrais-je chercher différemment pour bénéficier de la contrainte? J'utilise SQL Server 2008 R2.
Est-ce que NVARCHAR est '@ Search1' et' @ Search2'? Si ce ne sont pas des chaînes Unicode alors j'ai vu ce genre de chose (incompatibilité de collation) causant de tels problèmes de performance avant. –