2017-07-01 74 views
0

假设我有两个tables,clientsoptions加入无钥匙表时速度慢

客户表将具有id列。 选项表将具有列id,option_idname

查询应该是这样的

SELECT o.name FROM clients c JOIN options o ON o.id = c.id 

每个客户最多可以有5个独特的选项。因此,客户端可能会在选项表中看起来像这样:

ID  option_id name 
client1 1   test1 
client1 2   test2 
client1 3   test3 
client1 4   test4 
client1 5   test5 

有这种错误。由于选项表ID不是唯一的,我不能使用主键,这使得查找速度非常慢。

这样做会更好吗?我考虑将option_id和名称编入数组中,这将使其成为每个客户端的一行。但它变得非常复杂,因为客户端能够删除并添加他们的选项。

+2

你仍然可以索引ID – RiggsFolly

+0

你说得对。外键正是我所期待的。感谢您让我走向正确的方向。 –

回答

0

我认为,如果你分开与逗号选项名称的问题将解决:

SELECT GROUP_CONCAT(o.name SEPARATOR ',') as option_names FROM clients c JOIN options o ON o.id = c.id