gpt4 book ai didi

oracle - Oracle 10g-优化WHERE IS NOT NULL

转载 作者:行者123 更新时间:2023-12-03 14:33:42 25 4
gpt4 key购买 nike

我们有Oracle 10g,我们需要查询1个表(无联接)并过滤出其中1列为空的行。当我们这样做时-WHERE OurColumn不为空-我们在非常大的表-BAD BAD BAD上进行了全表扫描。该列上有一个索引,但是在这种情况下将被忽略。有什么解决办法吗?

谢谢

最佳答案

优化器认为全表扫描会更好。

如果只有几行NULL,则说明优化程序是正确的。

如果您完全确定索引访问会更快(也就是说,使用75%的行超过col1 IS NULL行),则提示您查询:

SELECT  /*+ INDEX (t index_name_on_col1) */
*
FROM mytable t
WHERE col1 IS NOT NULL


为什么 75%

因为使用 INDEX SCAN检索索引未涵盖的值意味着对 ROWID进行了隐藏连接,其成本约为表扫描的 4倍。

如果索引范围包含多于 25%行,则表扫描通常会更快。

Tony Andrews所述,聚类因子是测量此值的更准确方法,但是 25%仍然是一个很好的经验法则。

关于oracle - Oracle 10g-优化WHERE IS NOT NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/721556/

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