2016-11-23 91 views
-1

我必須與關係表。哪個更好? city.state.id或city.state_id

國家

  • ID

  • ID
  • 狀態

哪種性能更好?

city.state.idcity.state_id

+0

您是否嘗試過制定基準?狀態是否被訪問過? – Sayse

+0

@Sayse沒有傢伙。我不知道我該如何做基準!並沒有訪問狀態! – Chalist

回答

3

city.state_id更好反正。如果您只需要id foriegn密鑰,則不需要select_related這裏。只需要city.state_id(因爲foriegn密鑰ID將在提供city對象的查詢中獲取)。您可以使用select_related來避免這種情況。

1

city.state_idcity.state.id更好。因爲它只做一個查詢而不是兩個。

順便說一句,您可以使用Django Debug Toolbar進行調試查詢。

1

<field>_id現場你看到的是數據庫列名

docs

在幕後,Django的追加「_id」字段名來創建其數據庫列名。在上面的例子中,對於汽車模型的數據庫表中會有一個MANUFACTURER_ID列

因此,這意味着它並不需要做一個單獨的查詢檢索外鍵實例(見Select a single field from a foreign key有詳細介紹)。

但這是假設你沒有使用select_relatedprefetch_related

+0

這種情況下'select_related'的區別是什麼? – Chalist

+0

[「....表示稍後使用外鍵關係不需要數據庫查詢。」](https://docs.djangoproject.com/en/1.10/ref/models/querysets/#select-related) – Sayse