返回数据量大吗?
不大的话请建立合适的索引

解决方案 »

  1.   

    用视图索引吧================================>
    索引视图与查询相结合
    虽然对可索引的视图的限制可能使您无法设计解决全部问题的视图,但仍可以设计多个较小的索引视图以加快部分进程的速度。 请考虑下列示例: 假设某个经常执行的查询不仅要聚合某一数据库中的数据,还要聚合另一数据库中的数据,并且要联接结果。因为索引视图不能从多个数据库中引用表,所以不能设计单个视图来完成整个过程。但是,可在每个数据库中创建一个为该数据库执行聚合的索引视图。如果优化器可将这些索引视图与现有查询匹配,由于无须对现有查询重新编码,至少会加快聚合处理的速度。虽然联接处理速度没有加快,但因为使用存储在索引视图中的聚合,所以总体查询速度将更快。
    假设某个经常执行的查询要聚合几个表中的数据,然后使用 UNION 组合结果。一个索引视图中不允许使用 UNION。可再设计一些视图以执行各个聚合操作。这样一来,优化器就可以选择索引视图以加快查询的速度而无须对查询重新编码。尽管 UNION 处理速度没有提高,但每一个聚合进程的速度确实提高了。 
    设计可满足多个操作的索引视图。因为优化器可使用即使没有在 FROM 子句中指定的索引视图,所以,设计良好的索引视图可加快许多查询的处理速度。例如,考虑在以下视图上创建索引:CREATE VIEW ExampleView (PriKey, SumColx, CountColx)
    AS
    SELECT PriKey, SUM(Colx), COUNT_BIG(Colx)
    FROM MyTable
    GROUP BY PriKey该视图不仅能满足直接引用视图列的查询,还可用于满足查询基表并包含表达式如 SUM(Colx)、COUNT_BIG(Colx)、COUNT(Colx) 和 AVG(Colx) 的查询。因为所有这些查询只须在视图中检索少量的行而不需要从基表中读取全部行,所以查询速度将更快。