国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

如何使用Leading提示改變表連接方式

2024-07-21 02:38:11
字體:
供稿:網(wǎng)友
  在多表聯(lián)合查詢中,當(dāng)使用Ordered提示改變SQL執(zhí)行計(jì)劃之后,通常我們很難再次控制結(jié)果集中進(jìn)一步Join的順序.  這時(shí)候我們可以使用Oracle提供的另外一個(gè)Hints: Leading 提示.  這個(gè)Hints在Oracle9i中的含義為:
The LEADING hint causes Oracle to use the specified table as the first table in the join order.If you specify two or more LEADING hints on different tables, then all of them are ignored. If you specify the ORDERED hint, then it overrides all LEADING hints.
  通過Leading 和 use_hash 提示連用,我們可以巧妙的影響SQL中表和結(jié)果集的Join順序.  我們通過如下示例看一下這個(gè)提示是如何影響SQL執(zhí)行的:SQL> SELECT /*+ leading(t_max) use_hash(t_max t_middle) */ COUNT (*)
  2    FROM t_small, t_max, t_middle
  3  WHERE t_small.object_id = t_middle.object_id
  4  AND t_middle.object_id = t_max.object_id
  5  /Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=262 Card=1 Bytes=12)
   1    0   SORT (AGGREGATE)
   2    1     HASH JOIN (Cost=262 Card=400 Bytes=4800)
   3    2       HASH JOIN (Cost=225 Card=113776 Bytes=910208)
   4    3         TABLE access (FULL) OF 'T_MAX' (Cost=151 Card=113792 Bytes=455168)
   5    3         TABLE ACCESS (FULL) OF 'T_MIDDLE' (Cost=39 Card=28447 Bytes=113788)
   6    2       TABLE ACCESS (FULL) OF 'T_SMALL' (Cost=2 Card=100 Bytes=400)   我們看到,通過這兩個(gè)Hints的聯(lián)合使用,該查詢首先對(duì)T_MAX和T_MIDDLE表進(jìn)行HASH JOIN,再以這個(gè)結(jié)果集同T_SMALL進(jìn)行HASH JION.  單純通過Ordered和USE_HASH提示通常是達(dá)不到這個(gè)效果的:SQL> SELECT /*+ ordered use_hash(t_max t_middle) */ COUNT (*)
  2    FROM  t_max, t_middle,t_small
  3  WHERE t_small.object_id = t_middle.object_id
  4  AND t_middle.object_id = t_max.object_id
  5  /Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=228 Card=1 Bytes=12)
   1    0   SORT (AGGREGATE)
   2    1     HASH JOIN (Cost=228 Card=400 Bytes=4800)
   3    2       TABLE ACCESS (FULL) OF 'T_SMALL' (Cost=2 Card=100 Bytes=400)
   4    2       HASH JOIN (Cost=225 Card=113776 Bytes=910208)
   5    4         TABLE ACCESS (FULL) OF 'T_MAX' (Cost=151 Card=113792 Bytes=455168)
   6    4         TABLE ACCESS (FULL) OF 'T_MIDDLE' (Cost=39 Card=28447 Bytes=113788)
  這是Leading  Hints在Oracle9i中的一個(gè)非凡用法.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南召县| 武乡县| 扎鲁特旗| 二连浩特市| 重庆市| 晋城| 关岭| 普定县| 忻州市| 丹棱县| 利津县| 宁津县| 宣武区| 宜昌市| 枝江市| 肇源县| 石楼县| 昆明市| 西平县| 东阿县| 民丰县| 罗定市| 萝北县| 钟祥市| 日喀则市| 临颍县| 同德县| 洛阳市| 大兴区| 灌云县| 界首市| 天水市| 吴旗县| 观塘区| 彝良县| 乡宁县| 蒙山县| 永寿县| 尼玛县| 榆树市| 五大连池市|