某些类型的查询天生就要占用大量的资源。这与大多数关系型数据库管理系统 (RDBMS) 常见的数据库和索引重大问题有关,而不是 SQL Server 特有的。它们并非是低效的,因为优化程序将以尽可能最为有效的方式来实现这些查询。但它们仍会占用大量的资源,而 SQL 面向集合的特性使它们显得效率很低。优化程序对于消除这些结构天生对资源的大量消耗毫无办法。与较简单的查询相比,它们非常耗费资源。尽管 SQL Server 将使用最为优化的访问计划,还是受可能占用大量资源的基线的限制。
例如:
• 大型结果集
• IN、NOT IN 及 OR 查询
• 高度非唯一 WHERE 子句
• !=(不等于)比较运算符
• 某些列函数,如 SUM
• WHERE 子句中的表达式或数据转换
• WHERE 子句中的局部变量
• GROUP BY 的复杂视图
许多因素使得有必要使用这些查询结构。如果优化程序能在执行占用大量资源的部分查询之前限制结果集的大小,这些查询结构对性能的影响将被减少。下边给出了几个例子。