MySQL Innodb索引混淆

时间:2016-11-01 10:24:10

标签: mysql indexing innodb

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

我正在使用以下列创建一个非常大的表:Employee_Name(VARCHAR),Employee_ID(INT),Employee_Birthday(INT)。

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

虽然创建后我不会更新Employee_ID,但我会经常将新员工插入此表。

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

2 个答案:

答案 0 :(得分:2)

根据典型的SELECTsUPDATEsDELETEs创建索引。不要担心INSERTs;一个INSERT的开销远远低于其他操作的加速。

使用InnoDB,总会有一个PRIMARY KEY,所以你也可以为它做一些有用的事情。

答案 1 :(得分:1)

在评估索引的创建时,KEY问题是:对于查询或INSERTIONS,是否会访问此表。此外,您需要指定非常大的表的含义(因为您正在谈论员工,我猜这个表可能会托管少于100K的记录,对吧?)。如果您希望每个SELECT有数千个INSERT,那么您可以尝试不使用索引。另一方面,如果您将主要查询表格,则在列Employee_ID中设置索引是可行的方法。