新聞中心
LEADING Hint
?LEADING? Hint 指示優(yōu)化器在執(zhí)行計(jì)劃中使用指定的表集作為前綴,它可以用來指定表的聯(lián)接順序。這個(gè) Hint 比 ?ORDERED? Hint 更通用。

以下是 ?LEADING Hint? 的語法:
/*+ LEADING ( [ @ queryblock ] tablespec [ tablespec ]... ) */?LEADING? Hint 為確保按照用戶指定的順序聯(lián)接表,所以會(huì)進(jìn)行嚴(yán)格的檢查。如果發(fā)現(xiàn) Hint 指定的 ?table_name? 不存在,則 ?LEADING? Hint 失效。如果發(fā)現(xiàn) Hint 中存在重復(fù)表,則 ?LEADING? Hint 失效。如果在優(yōu)化器聯(lián)接期間,無法找到對(duì)應(yīng)的表,那么該表及后面的表指定的聯(lián)接順序失效,該表前面指定的順序依然有效。如果由于聯(lián)接圖中的依賴關(guān)系,無法首先按照指定的順序聯(lián)接指定的表,則 ?LEADIN?G Hint 失效。如果指定兩個(gè)或多個(gè)相互沖突的 ?LEADING? Hint,則 LEADING Hint 失效。如果您指定了 ?ORDERED? Hint,它將覆蓋所有的 ?LEADING? Hint。
示例如下:
SELECT /*+ LEADING(e j) */ *
FROM employees e, departments d, job_history j
WHERE e.department_id = d.department_id
AND e.hire_date = j.start_date;ORDERED Hint
?ORDERED? Hint 指示數(shù)據(jù)庫按照表在 ?FROM? 子句中出現(xiàn)的順序聯(lián)接表。建議使用 ?LEADING? Hint,它比 ?ORDERED? Hint 更通用。
以下是 ?ORDERED? Hint 的語法:
/*+ ORDERED */當(dāng)您從需要聯(lián)接的SQL語句中省略 ?ORDERED? Hint 時(shí),將由優(yōu)化器將選擇聯(lián)接表的順序。但是優(yōu)化器不知道從每個(gè)表中要選擇的行數(shù),此時(shí)您可以使用 ?ORDERED? Hint 來指定聯(lián)接順序。這樣使您能夠比優(yōu)化器更好地選擇內(nèi)部表和外部表。如果在指定該 ?ORDERED? Hint 后發(fā)生了改寫,那么就按照改寫后的語句中的 ?FROM? 子句的順序聯(lián)接表。
標(biāo)題名稱:創(chuàng)新互聯(lián)OceanBase教程:OceanBase 與聯(lián)接順序相關(guān)的 Hint
當(dāng)前URL:http://fisionsoft.com.cn/article/ccooodp.html


咨詢
建站咨詢
