Comparaison pour l'affichage d'un GridView
Salut,
Histoire d'apporter un peu d'eau au moulin, par curiosité j'ai comparé les requêtes générées par le Framework lors de l'affichage de trois GridView. Chacun est connecté à une DataSource native, je n'ai fait qu'utiliser les assistants.
- Le premier est connecté à un SqlDataSource;
- Le deuxième à une EntityDataSource;
- Le troisième à une LinqDataSource.
Les requêtes pour afficher la page 8 sont dans l'ordre:
Code:
SELECT * FROM [Table_1]
Code:
1 2 3 4 5 6 7 8 9 10 11
| SELECT COUNT(*) AS [value]
FROM [dbo].[Table_1] AS [t0]
SELECT TOP (10)
[Extent1].[Guid] AS [Guid],
[Extent1].[TestField] AS [TestField]
FROM ( SELECT [Extent1].[Guid] AS [Guid], [Extent1].[TestField] AS [TestField], row_number() OVER (ORDER BY [Extent1].[Guid] ASC) AS [row_number]
FROM [dbo].[Table_1] AS [Extent1]
) AS [Extent1]
WHERE [Extent1].[row_number] > 70
ORDER BY [Extent1].[Guid] ASC |
Code:
1 2 3 4 5 6 7 8 9 10
| SELECT COUNT(*) AS [value]
FROM [dbo].[Table_1] AS [t0]
exec sp_executesql N'SELECT [t1].[Guid], [t1].[TestField]
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY [t0].[Guid], [t0].[TestField]) AS [ROW_NUMBER], [t0].[Guid], [t0].[TestField]
FROM [dbo].[Table_1] AS [t0]
) AS [t1]
WHERE [t1].[ROW_NUMBER] BETWEEN @p0 + 1 AND @p0 + @p1
ORDER BY [t1].[ROW_NUMBER]',N'@p0 int,@p1 int',@p0=70,@p1=10 |
Evidemment la SqlDataSource perd car elle ramène toute la table. Que pense les DBA des deux autres sources?
A+