2016-11-01 85 views
0

一個非常基本的數據庫設計問題:的MySQL Innodb的索引混亂

我創建具有下列列的非常大的表:Employee_Name(VARCHAR)的Employee_ID(INT),Employee_Birthday(INT)。

我希望爲Employee_ID創建單列b-tree索引,因爲許多查詢都使用基於此列中值的SELECT和WHERE子句。

雖然我不會更新一次創建的Employee_ID,但我會頻繁地將新員工插入到此表中。

與索引列相比,添加索引列的行是否會增加成本?或者,只有在更新現有行時纔會應用附加成本?

+0

數據庫設計問題更適合dba.stackexchange.com。 – Barmar

回答

1

當評估索引的創建時,關鍵問題是:該表最大限度地用於查詢或INSERTIONS。另外,你需要指定你的意思非常大的表(因爲你在談論員工,我猜這個表可能會託管,可能少於100K記錄,對不對?)。如果你希望每個SELECT都有成千上萬的INSERT,那麼你可以嘗試不用索引。另一方面,如果您主要查詢表格,請在列Employee_ID中設置索引。

2

根據典型的SELECTs,UPDATEsDELETEs創建索引。不要太擔心INSERTs;一個INSERT的開銷比其他操作的加速要少很多。

隨着InnoDB,總是有一個PRIMARY KEY,所以你不妨讓它對你有用。