我有两个具有100万行的表。
案例1 :带有'cvaleur'的Where
子句
SELECT TOP(2000)
[p].[Id_Paie_Param_Constante_Variable] AS [id],
[v].[Date_MAJ] AS [DateMaj],
[v].[Id_Paie_Param_Constante_Variable_Valeur] AS [IdPaieParamConstanteVariableValeur]
FROM
[Paie_Param_Constante_Variable] AS [p]
LEFT JOIN
[Paie_Theme] AS [t] ON [p].[Code_Paie_Theme] = [t].[Code_Paie_Theme]
INNER JOIN
[Paie_Param_Constante_Variable_Valeur] AS [v] ON [p].[Id_Paie_Param_Constante_Variable] = [v].[Id_Paie_Param_Constante_Variable]
WHERE
[p].[Code_Constante_Variable_Type] = N'cvaleur'
ORDER BY
[DateMaj] DESC
此查询在200毫秒内返回我的行
案例2:带有'vformule'的Where
子句
SELECT TOP(2000)
[p].[Id_Paie_Param_Constante_Variable] AS [id],
[v].[Date_MAJ] AS [DateMaj],
[v].[Id_Paie_Param_Constante_Variable_Valeur] AS [IdPaieParamConstanteVariableValeur]
FROM
[Paie_Param_Constante_Variable] AS [p]
LEFT JOIN
[Paie_Theme] AS [t] ON [p].[Code_Paie_Theme] = [t].[Code_Paie_Theme]
INNER JOIN
[Paie_Param_Constante_Variable_Valeur] AS [v] ON [p].[Id_Paie_Param_Constante_Variable] = [v].[Id_Paie_Param_Constante_Variable]
WHERE
[p].[Code_Constante_Variable_Type] = N'vformule'
ORDER BY
[DateMaj] DESC
此查询在5秒内返回我的行!为什么?
我有两个索引:
CREATE NONCLUSTERED INDEX [IX_Relationship9]
ON [dbo].[Paie_Param_Constante_Variable] ([Code_Constante_Variable_Type] 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]
GO
CREATE NONCLUSTERED INDEX [DateMAJ]
ON [dbo].[Paie_Param_Constante_Variable_Valeur] ([Date_MAJ] DESC)
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]
GO
案例3:带有'vformule'的Where
子句,但按ASC排序
SELECT TOP(2000)
[p].[Id_Paie_Param_Constante_Variable] AS [id],
[v].[Date_MAJ] AS [DateMaj],
[v].[Id_Paie_Param_Constante_Variable_Valeur] AS [IdPaieParamConstanteVariableValeur]
FROM
[Paie_Param_Constante_Variable] AS [p]
LEFT JOIN
[Paie_Theme] AS [t] ON [p].[Code_Paie_Theme] = [t].[Code_Paie_Theme]
INNER JOIN
[Paie_Param_Constante_Variable_Valeur] AS [v] ON [p].[Id_Paie_Param_Constante_Variable] = [v].[Id_Paie_Param_Constante_Variable]
WHERE
[p].[Code_Constante_Variable_Type] = N'vformule'
ORDER BY
[DateMaj] ASC
此查询在200毫秒内返回我的行!
我在DateMAJ上的索引是DESC。
我需要按降序对SQL进行排序...
非常感谢任何帮助
欢呼
答案 0 :(得分:0)
我有两个初步想法:
1)索引[Code_Constante_Variable_Type]按ASC排序,因此较早的值(“ vformule”)早发现了值(“ cvaleur”)。
2)表“ cvaleur”中的出现次数少于表中“ vformule”中的出现次数。