首页 > 解决方案 > 如何以正确的方式在 Mysql DB 中设置表键(索引)

问题描述

我想知道应该如何构造和创建 MYSQL 表中的键以确保最有效的搜索。

假设我有一个包含字段的表:

A B C D

我在我的 SELECT 语句中使用了 WHERE 条件中这些字段的所有可能组合。

创建一个涵盖所有字段的组合键会更好吗?

或者我应该更好地为四个字段中的每一个创建一个键?

哪个变体对搜索查询有更好的性能?

键只能是 INDEX 类型。

感谢您的回答。

标签: mysqlindexing

解决方案


我的食谱涵盖了一些基础知识。

我在我的 SELECT 语句中使用 WHERE 条件中这些字段的所有可能组合。

那是不切实际的。相反,获得一些 UI 经验并决定通常查询哪 2 列。然后有一个INDEX(x, y, ...)x 和 y 是最常见的地方。

如果 x 和 y 都用 进行测试=,那么先放哪一个并不重要。否则,先放=一个。如果两者都没有使用 进行测试=,那么拥有多于一列将无济于事。

请提供您的应用程序的提示。房地产?婚介?还有什么?

创建一个涵盖所有字段的组合键会更好吗?

很少。索引中列的顺序很重要。

或者我应该更好地为四个字段中的每一个创建一个键?

也许。您也可以根据可能的组合添加更多列。

哪个变体对搜索查询有更好的性能?

我们需要谈论具体的例子。

键只能是 INDEX 类型。

嗯?“键”和“索引”是同义词。

更多的

由于这些值是“连续的”“科学”值,因此您可能应该将FLOAT其用于数据类型。您可能会主要与范围进行比较(例如,pH < 5.0)。

使用复合索引时,索引在第一个“范围”之后不再有用。因此,您可能没有比拥有 4 个 1 列索引更好的方法了。(让我们看一些典型的查询示例。)


推荐阅读