我有一個成本表,用於存儲特定日期的物料成本。 該表如下最好的方式來鍵入一個表是唯一的兩個屬性的perfromant連接在MySQL中?
===============================
id item_id cost_date cost
===============================
其中ID是主鍵,ITEM_ID是一個外鍵的項目表,cost_date是該項目是可用的日期,成本是該項目的成本。我也有一個訂單表
==============
id order_date
==============
其中id是主鍵,date是訂貨日期。如果項目在某一天訂購,它應該具有成本條目,其中cost_date與其所屬訂單的order_date相匹配。 最後我有一個orders_items表
==============================
id order_id item_id price
==============================
其中id是主鍵,ORDER_ID是外鍵的訂單,ITEM_ID是外鍵的項目和價格是項目的特定順序的價格。
我經常想看看導致這個討厭的連接集的價格和成本。
FROM orders_items
LEFT JOIN items ON orders_items.item_id = items.id
LEFT JOIN orders ON orders_items.order_id = orders.id
LEFT JOIN costs ON costs.date = orders.date AND costs.item_id = items.id
事實上,我必須爲費用進行雙連接,這實際上減慢了我的查詢速度。我想知道是否有一種方法可以改變密鑰,以允許從長遠來看更高性能的一組連接? 是否有一個很好的地方可以爲cost.id創建一個外鍵,這對於成本中的每一行都是唯一的,並且會消除對雙連接的需求?
請顯示您的表格定義,包括索引。 – philipxy
'費用'需要'INDEX(日期,item_id)'(按任意順序)。或者,也許它已經是PK了?表現不應該太差。 –