我的问题是,在我们的应用程序中,我们SELECT
在 MS SQL Server (2008) 数据库上执行复杂操作,该数据库由多个连接(3 个或更多)组成,用于在使用创建的表之间使用PIVOT
(每个数据透视表大约有 10 000 行)。
只有 aSELECT
相当快(select 从 10, 000 只返回总数中的 50 行)。但是查找所有记录的计数Count(*)
或过滤要慢得多(10 000 条记录大约需要 2 秒)
有什么方法可以加快查询总数和过滤的查询速度?例如 SQL Server 中的一些缓存或优化查询?
注意:我们的 ASMX 服务对数据库进行查询。注意2:每个包含数据透视表的表都有主键类型:uniqueidentifier
基本选择如下所示:
SELECT
Table1.[Id] AS [Id],
Table1.[Status] AS [Status],
Table2.[Id] AS [Id],
Table2.[Status] AS [Status],
FROM
(
-- Do PIVOT
) AS Table1
LEFT JOIN (
-- Do PIVOT
) AS Table2 ON Table2.xxx = Table1.yyy
)
--Catch only first X records..