gpt4 book ai didi

sql - 在 oracle 中使用提示

转载 作者:行者123 更新时间:2023-12-01 10:08:51 24 4
gpt4 key购买 nike

我正在尝试将提示应用于我的查询,但解释计划不会更改正在使用的提示。

我的问题

select/*+ USE_HASH(master_flight)*/ bid, b.fno, seat, flight_date from
master_booking b, master_flight f where b.fno = f.fno and rownum <
120000

解释计划

119999 COUNT STOPKEY (cr=11336 pr=446 pw=0 time=240292 us)
119999 NESTED LOOPS (cr=11336 pr=446 pw=0 time=120236 us)
800 TABLE ACCESS FULL ASS2MASTER_FLIGHT (cr=936 pr=441 pw=0 time=22455 us)
119999 TABLE ACCESS CLUSTER ASS2MASTER_BOOKING (cr=10400 pr=5 pw=0 time=6858 us)
800 INDEX UNIQUE SCAN FNO_INDEX (cr=1600 pr=5 pw=0 time=4717 us)(object id 332468)

如您所见,我强制集群使用散列连接而不是嵌套循环。但解释计划仍然显示它正在使用嵌套循环。

最佳答案

通常,如果您使用提示,则需要引用别名,而不是表名。而 USE_HASH 需要两个表名。所以你需要类似的东西

SELECT /*+ use_hash(b f) */ 
bid, b.fno, seat, flight_date
FROM master_booking b,
master_flight f
WHERE b.fno = f.fno
AND rownum < 120000

当然,如果您发现自己需要提示查询,这通常意味着您的统计数据不正确。并且您通常最好解决统计信息中的任何问题,以便优化器自行选择更有效的计划。

关于sql - 在 oracle 中使用提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7909424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com