假设我有两张桌子,
为了提问,我们假设它们是两个名为customers
and的表cars
。
Customers
id name age
Cars
id customer_id brand_id engine cc
我们需要索引 customer_id 吗?它有什么好处吗?
假设我有两张桌子,
为了提问,我们假设它们是两个名为customers
and的表cars
。
Customers
id name age
Cars
id customer_id brand_id engine cc
我们需要索引 customer_id 吗?它有什么好处吗?
是的,您可能想加入客户表,您需要在 customer_id 上放置一个索引,以便可以更快地完成查找。
但就像评论中所说的那样,这取决于,如果你不打算加入客户表(或在其上执行 WHERE / GROUP BY / ORDER BY 等)并纯粹使用它来显示 id,这不是必需的.
根据您的应用程序业务逻辑以及查询基础的方式,在 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
更一般地说,索引外键约束总是一个好主意。
想强调一下InnoDB
,在外键列上自动创建索引。请参阅innodb-外键约束
在您的情况下customer_id
,如果应用了外键约束。