MySQL 中的多字段索引是一个好的选择吗?

问题描述 投票:0回答:2

我有一个巨大的数据集。结构看起来像这样:

K_Field1, K_Field2, K_Field3, K_Field4, D_Field5, D_Field6, D_Field7, D_field8

问题是只有前 4 个字段 (

K_Field1,K_Field2,K_Field3,K_Field4
) 一起唯一标识一行。我创建了一张表,使用这些字段作为其字段。

假设我使用该结构的表中有 100 万行。如果我导入一条新记录,我必须确定它是否已在数据库中。如果是,那么我必须更新它,如果不是,那么我需要插入新行。

为此,我需要在前 4 列上放置一个多字段索引,这恐怕不是最好的解决方案。是否有更好的数据库结构来存储和搜索该数据,或者我必须忍受四字段索引?

我正在使用MySQL

mysql sql database performance indexing
2个回答
5
投票

在前 4 列上创建索引没有任何问题,事实上您应该:

create unique index mytable_key on mytable(K_Field1,K_Field2,K_Field3,K_Field4);

因为这就是你的现实情况。

这也是“正确”的解决方案。


0
投票

假设我有一个可以以多种方式应用于某种情况的实体。对于所有这些方式,都有列。构建的 where 子句规定该列可以为空,或者必须与在数据库中查找适用记录的项目相匹配。让我们以路线表为例,该项目是从 A 到 B 的行程。匹配标准是路线开放的日期(从、到)、出发地和目的地必须匹配、它们需要处于活动状态等,在我的特定情况下,数据库中的实体有 12 个条件字段,其中 8 个是可选的。哦,这是一个非常时间紧迫的过程。因此,将 0.01 秒的结果减少 30% 是巨大的。

我应该在所有 12 列上创建索引吗?

索引什么时候列数过多?拥有更多的列对它有什么影响?

顺便说一下:我的查询包含大于和小于,所以哈希索引是不可能的。

© www.soinside.com 2019 - 2024. All rights reserved.