gpt4 book ai didi

sql - Postgres : when index is used

转载 作者:行者123 更新时间:2023-11-29 14:16:45 25 4
gpt4 key购买 nike

为了更好地理解索引在哪些情况下被正确使用,我想列举可能的情况。

假设我们有一个包含“a”、“b”、“c”、“d”列的表。

我们在 (a, b, c, d) 上创建一个索引:

create index my_index on table my_table (a, b, c, d)

是否在以下情况下使用:

1)

where a=% and b=% and c=% and d=%

2)

where a=% and b=%

3)

where a=%

4)

where b=% and c=% and d=%

5)

where c=% order by b

6)

where a=% and b=% and c=% order by case when d is not null then d else c end

7)让我们假设现在我们有更多的 7 点列,但索引仅在 (a, b, c, d)

where a=% and b=% and c=% and d=% and e=% and f=% and g=%

最佳答案

MySQL 有很好的documentation解释多列索引。不同数据库的规则基本相同(尽管有一些更高级的东西)。

当然,还有其他因素 -- 例如 from 子句中发生的事情、选择的列、表的统计信息等等。

以下是基本指导:

1) 其中 a=% and b=% and c=% and d=%

可以,只要所有条件都相等。我不知道排序规则冲突会发生什么情况。

2) 其中 a=% 和 b=%

可以,只要所有条件都相等。我不知道排序规则冲突会发生什么情况。

3) 其中a=%

可以,只要所有条件都相等。我不知道排序规则冲突会发生什么情况。

4) 其中 b=% 且 c=% 且 d=%

可能不会。如果使用,则需要扫描索引。如果索引覆盖了查询,就会出现这种情况。

5) where c=% order by b

可能不会。

6) where a=% and b=% and c=% order by case when d is not null then d else c end

应用于 where 子句。仍然需要一种排序。

关于sql - Postgres : when index is used,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45437804/

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