关于今天看到的1条sql语句
由于要做一个查询:
select count(*) as cnt from BUSINESS_TIP;但是执行速度很慢,并且在第一次执行之后,以后的执行依然会很慢
同事就给我说了下面这一条sql:
select /*+rule*/ count(*) as cnt from BUSINESS_TIP;执行时间减少了一半..并且再重复执行的查询速度很快...想问问高手这个是怎么回事?因为我对数据库非常的不熟...只是粗粗的了解的到 /**/是一种注释...在这里还有其他的含义吗?对了.我们用的是Oracle,听说好像是内部的什么什么定义的~~~
由于要做一个查询:
select count(*) as cnt from BUSINESS_TIP;但是执行速度很慢,并且在第一次执行之后,以后的执行依然会很慢
同事就给我说了下面这一条sql:
select /*+rule*/ count(*) as cnt from BUSINESS_TIP;执行时间减少了一半..并且再重复执行的查询速度很快...想问问高手这个是怎么回事?因为我对数据库非常的不熟...只是粗粗的了解的到 /**/是一种注释...在这里还有其他的含义吗?对了.我们用的是Oracle,听说好像是内部的什么什么定义的~~~
http://oradbhome.itpub.net/post/14580/111974
/*+ RULE*/提示表示本条查询语句要用到基于规则的优化,以索引为优先,这在10g里已经是过时了,10g以后只支持基于统计的优化,所以建议楼主对表BUSINESS_TIP先做一个分析,
SQL>EXEC DBMS_STATS.GATHER_TABLE_STATS(username,'BUSINESS_TIP');然后不用提示执行
SELECT COUNT(*) FROM business_tip;
/*+ RULE*/ 提示表示本条查询语句要用到基于规则的优化,以索引为优先,