优化器提示主要有以下几种:
(1)fast number_rows
这个提示,可以看作是 优化器目标,做为一种指导方针,影响优化器的决策。
比如:
select * from A with(fast 100)
就是告诉sql server的优化器,以最快的速度返回100行数据,以这个为目标,生成执行计划,所以,返回100行数据的速度会很快,但是对后面的数据来说,这个执行计划可能不是最优的。
(2)robust plan
强制查询优化器尝试一个计划,该计划可能以性能为代价获得最大可能的行大小。
处理查询时,中间表和运算符可能需要存储和处理比输入行宽的行。 在有些情况下,行可能很宽,以致某个运算符无法处理行。如果发生这种情况,数据库引擎将在查询执行过程中生成错误。通过使用 ROBUST PLAN,可以指示查询优化器不考虑可能会遇到该问题的所有查询计划。
如果不能使用这样的计划,查询优化器将返回错误而不是延迟对查询执行的错误检测。
行可以包含可变长度列;数据库引擎允许将行大小定义为超过数据库引擎处理能力的最大可能的大小。
通常,应用程序存储实际大小在数据库引擎处理能力范围内的行,而不管最大可能大小。如果数据库引擎遇到过长的行,则返回执行错误。
(3) OPTIMIZE FOR (变量名 = 值)
一般用在定义了变量的sql中,让sql server的优化器 按照 变量为某个值的这种情况,生成执行计划。
(4)EXPAND VIEWS
指定展开索引视图,而且查询优化器不将任何索引视图看作是查询中任何部分的替代。当视图名称由查询文本中的视图定义替换时,视图将展开。
实际上,该查询提示不允许在查询计划中直接使用索引视图和直接在索引视图上使用索引。