gpt4 book ai didi

sql - 是否有类似 IBM DB2 的选择性子句直接在 PostgreSQL 中注入(inject)选择性

转载 作者:行者123 更新时间:2023-11-29 12:12:36 27 4
gpt4 key购买 nike

IBM DB2 支持 selectivity clause提供额外的选择性信息以及基本谓词以帮助查询优化:

The SELECTIVITY clause can only be used with basic predicates (as defined in the SQL reference), not predicates such as LIKE or BETWEEN. A lower selectivity value (very small number) will tell DB2 that the predicate will qualify fewer rows (and encourage use of indexes defined on that column). A higher selectivity value (close to 1) will mean the opposite.

documentation 中的示例:

SELECT c1, c2, c3, FROM T1, T2, T3
WHERE T1.x = T2.x AND
T2.y=T3.y AND
T1.x >= ? selectivity 0.00001 AND
T2.y > ? selectivity 0.5 AND
T3.z = ? selectivity 0.2 AND
T3.w = ?

我正在 PostgreSQL 中寻找类似的功能,通过它我们可以将每个谓词的选择性或至少在关系级别的选择性直接作为查询的一部分注入(inject)。存在吗?或者在这方面有什么正在进行的工作吗?如果没有正在进行的工作,我应该如何开始实现此功能?

附加说明:选择性 = 基数/(记录数)。谓词引起的选择性是表中满足谓词的元组的分数。关系的选择性取决于查询中涉及该关系的所有谓词的选择性。

最佳答案

I am looking for a similar feature in PostgreSQL by which we can inject selectivity of each predicate or at least selectivity at relation level directly as part of query. Does there exist one?

对于运营商来说,没有什么比这更好的了。

对于表格,您可以修改 pg_statistic,但这只能让您在统计模型提供的限制范围内伪造统计数据。例如,由于 PostgreSQL 不尝试识别列间相关性,因此它没有地方存储这样的信息,也没有办法查找它。

Is there any on-going work on this front?

没有我知道的。 pgsql-hackers 邮件列表的帖子可能会找到更多信息。

If there is no ongoing work on this, How should I start implementing this feature?

同样,我会在 pgsql-hackers 上提出它。不过,在您这样做之前,请先阅读 PostgreSQL 社区关于查询提示的政策。

有成本提示的先例(请参阅 CREATE FUNCTIONCOST 术语)和覆盖 ANALYZE 的估计。所以我认为你应该能够在这里产生一些牵引力,尽管你应该期望在语法上有很多自行车脱落。

关于sql - 是否有类似 IBM DB2 的选择性子句直接在 PostgreSQL 中注入(inject)选择性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24980182/

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