Option子语句
刚在MSDN上看到对Option的解释为:指定应在整个查询中使用所指定的查询提示。 每个查询提示只能指定一次,但允许指定多个查询提示。 使用该语句只能指定一个 OPTION 子句。
请问如下问题:
1.查询提示是什么意思?
2."每个查询提示只能指定一次,但允许指定多个查询提示"这又是什么意思?
3.Option中经常用(fast 整数),请问其中的fast和整数分别是什么意思?
4.SELECT语句中用Option子语句后好象会提高整个语句的速度吗?
[解决办法]
http://msdn.microsoft.com/zh-cn/library/ms190322.aspx
[解决办法]
select 语句带option,我几乎没有用过。
网上查到一些相关资料如下评价:
http://zhidao.baidu.com/link?url=foiqbo9R3vdSB65Hqf4FJ8opX5RzICrrfcScl9X59aDK9W1zKQzZpOuCaEkktC8Z9dFcKNwU5os7OptPMr2nHq
不推荐.
[解决办法]
1.查询提示是什么意思?
--实际上是通过标识来告诉,查询分析器或存储引擎你要怎么做,剩下的它来完成
2."每个查询提示只能指定一次,但允许指定多个查询提示"这又是什么意思?
--option 1,2,3 这样OK
--option 1
--option 2 这样不行
3.Option中经常用(fast 整数),请问其中的fast和整数分别是什么意思?
--fast 是告诉尽快返回指定的整数行结果,而无需等待全部逻辑执行完成。
4.SELECT语句中用Option子语句后好象会提高整个语句的速度吗?
--双刃剑,用好可提高,用不好,慢的不是一星半点儿,需要比较丰富的经验才能用好。
--实际环境,用的较少
select *
from
(
select 'abc' as v,1 as vid
union all
select 'cd',2
)a
inner join
(
select 'cd' as v,2 as vid
union all
select 'abc',1
)b
on a.vid = b.vid
option(hash join,maxdop 2)
select *
from
(
select 'abc' as v,1 as vid
union all
select 'cd',2
)a
inner join
(
select 'cd' as v,2 as vid
union all
select 'abc',1
)b
on a.vid = b.vid
option(hash join)
select *
from
(
select 'abc' as v,1 as vid
union all
select 'cd',2
)a
inner hash join --这个联接提示,更为灵活,适用于多表关联
(
select 'cd' as v,2 as vid
union all
select 'abc',1
)b
on a.vid = b.vid