2017-07-01 38 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