Bonjour a tous
j'ai deux tables sur la mémé database la premier contiens 2386 ligne alors que la deuxième table contiens 36666 ligne ces deux tables contiens leurs propres index
sur la deuxième table je rencontre des problème du deadlook en analysant le problème j'était surpris par un chose que j'arrive pas a comprendre que sur le premier table qui contient un nbre de ligne inférieur par rapport a la deuxième que l'optimiseur du requête a choisie de faire un scan d'un index cluster alors sur la deuxième table sql l' optimiseur fait un scan du table qui présente pour moi une opération très coûteuse en terme coût pour info ce dernier table ne contient pas un index cluster il contiens 3 index qui ne sont pas cluster ci joint leur script du création
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
USE [Gest_Seq]
GO
 
/****** Object:  Table [dbo].[Parametre]    Script Date: 10/10/2014 10:45:13 ******/
SET ANSI_NULLS ON
GO
 
SET QUOTED_IDENTIFIER ON
GO
 
SET ANSI_PADDING ON
GO
 
CREATE TABLE [dbo].[Parametre](
	[sq_IdSeq] [int] NOT NULL,
	[pa_NomParam] [varchar](30) NOT NULL,
	[pa_ValParam] [varchar](255) NULL,
	[pa_Index] [int] NOT NULL,
	[ty_IdTypeVar] [int] NULL,
	[pa_Option1] [varchar](30) NULL,
	[pa_Option2] [varchar](30) NULL,
	[pa_Observation] [varchar](255) NULL,
 CONSTRAINT [PK_PARAMETRE] PRIMARY KEY NONCLUSTERED 
(
	[pa_NomParam] ASC,
	[sq_IdSeq] ASC,
	[pa_Index] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
 
GO
 
SET ANSI_PADDING OFF
GO
 
ALTER TABLE [dbo].[Parametre]  WITH NOCHECK ADD  CONSTRAINT [FK_PARAMETRE_SEQUENCE] FOREIGN KEY([sq_IdSeq])
REFERENCES [dbo].[Sequence] ([sq_IdSeq])
ON UPDATE CASCADE
ON DELETE CASCADE
NOT FOR REPLICATION 
GO
 
ALTER TABLE [dbo].[Parametre] CHECK CONSTRAINT [FK_PARAMETRE_SEQUENCE]
GO
 
ALTER TABLE [dbo].[Parametre]  WITH NOCHECK ADD  CONSTRAINT [FK_PARAMETRE_TYPEVAR] FOREIGN KEY([ty_IdTypeVar])
REFERENCES [dbo].[TypeVar] ([ty_IdTypeVar])
ON UPDATE CASCADE
NOT FOR REPLICATION 
GO
 
ALTER TABLE [dbo].[Parametre] CHECK CONSTRAINT [FK_PARAMETRE_TYPEVAR]
GO
 
ALTER TABLE [dbo].[Parametre] ADD  CONSTRAINT [DF_PARAMETRE_pa_Index]  DEFAULT (0) FOR [pa_Index]
GO
ma question comment je peux optimiser ma procédure stocké de telle sorte que l'optimiseur choisi de faire un scan d'index au lieu de faire un parcours du tableau surtout que ce dernier est entrain d'évoluer chaque jour et je suis devant un phénomène de deadlook suite a cette mauvaise indexation
Par exemple si je prend un index non cluster et je le rend cluster quel serai leur impact sur la table est ce que je peux avoir un phénomène du dégradation du performance ???
cordialement