gpt4 book ai didi

mysql - 具有 3 个字段的索引是否适用于 2 个字段查询?

转载 作者:可可西里 更新时间:2023-11-01 08:01:21 26 4
gpt4 key购买 nike

我正在考虑在表上应用 3 个字段(类型、状态、user_id)的索引。我的大多数查询都有使用所有 3 个字段的 WHERE。但是,我有几个使用频繁的查询只使用 2 个字段(类型和状态)。

我的问题是,创建包含所有 3 个字段的索引是否会被仅真正比较 2 个字段的查询有效使用?或者有 2 个索引会更好,一个有 3 个字段,一个有 2 个字段?

最佳答案

我比 MySQL 更了解 Oracle,但我想在这种情况下是一样的。索引通常是一个 B-Tree,这意味着如果索引是 (type, status, user_id) 数据库通常仍然可以使用它来搜索 (type, status) 因为它是组合索引的第一部分。但是如果你使用 (status, user_id) 就不是这样了,除非有像 Oracle 的 INDEX_SKIP_SCAN 这样的东西。

第二个索引只覆盖两个字段可能会稍微快一些,具体多少取决于数据。但是如果你有两个索引,那么插入数据会比较慢,因为它们都需要维护。它还占用更多磁盘空间。因此,这是只有您才能决定的性能与空间权衡。

关于mysql - 具有 3 个字段的索引是否适用于 2 个字段查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2310364/

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