1

假设我有两张桌子,

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

Customers
id   name    age

Cars
id   customer_id  brand_id   engine    cc 

我们需要索引 customer_id 吗?它有什么好处吗?

4

3 回答 3

1

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

但就像评论中所说的那样,这取决于,如果你不打算加入客户表(或在其上执行 WHERE / GROUP BY / ORDER BY 等)并纯粹使用它来显示 id,这不是必需的.

于 2013-10-23T09:34:06.153 回答
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

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

于 2013-10-23T09:38:50.170 回答
1

想强调一下InnoDB,在外键列上自动创建索引。请参阅innodb-外键约束

在您的情况下customer_id,如果应用了外键约束。

于 2013-10-23T09:41:03.887 回答