MySQL Innodb索引混乱

MySQL Innodb indexing confusion

一个非常基本的数据库设计问题:

我正在创建一个非常大的 table,其中包含以下列:Employee_Name(VARCHAR)、Employee_ID(INT)、Employee_Birthday(INT)。

我希望为 Employee_ID 创建单列 b 树索引,因为我的许多查询都使用 SELECT 和基于此列中的值的 WHERE 子句。

尽管 Employee_ID 创建后我不会更新,但我会经常将新员工的信息插入此 table。

与没有索引相比,添加带有索引列的行是否会产生额外的成本?还是仅在更新现有行时才会产生额外费用?

在评估索引的创建时,关键问题是:此 table 主要用于查询还是用于插入。此外,您需要说明 非常大 table 的含义(因为您在谈论员工,我猜 table 可能会主持,少于 100K 条记录,对吗?)。如果您希望每个 SELECT 有数千个 INSERT,您可以尝试不使用索引。另一方面,如果您将主要查询 table,则在您的列 Employee_ID 中设置索引是可行的方法。

根据典型的SELECTsUPDATEsDELETEs创建索引。不用担心INSERTs;一个 INSERT 的开销比其他操作的加速要少很多。

有了 InnoDB,总有一个 PRIMARY KEY,所以你不妨把它做成对你有用的东西。