需要MySQL密钥索引吗?

时间:2013-10-23 09:32:52

标签: mysql

假设我有两张桌子,

为了提问,我们假设它们是两个名为customerscars的表。

Customers
id   name    age

Cars
id   customer_id  brand_id   engine    cc 

我们需要索引customer_id吗?它有什么优势吗?

3 个答案:

答案 0 :(得分:1)

是的,您可能想要加入customers表,您需要在customer_id上放置一个索引,以便更快地完成查找。

但是就像评论中所说的那样,这取决于,如果你不打算加入customers表(或者在它上面做一个WHERE / GROUP BY / ORDER BY等)并且纯粹使用它会显示id,它不是necassery。

答案 1 :(得分:1)

根据您的应用程序业务逻辑以及您将如何查询基础,在customer_id上建立索引将为您提供查询的巨大优势,例如

select * from customers join cars on customer_id = customers.id -- list all customers with their associated cars

甚至

select * from cars where customer_id = 2 -- list all cars for user 2

更一般地说,索引外键约束总是一个好主意。

答案 2 :(得分:1)

喜欢在InnoDB上强调,在外键列上自动创建索引。 见innodb-foreign-key-constraints

如果应用了外键约束,则在您的案例customer_id