Mysql

我需要為我的橋接表定義哪些索引?

  • April 12, 2020

我的數據庫中有三個表:

使用者:

  • user_id (PK)

角色:

  • role_id (PK)

使用者角色:

  • user_id (PK, FK)
  • role_id (PK, FK)

我已經圍繞索引列進行了大量研究,但是我找不到明確的答案來回答我的問題,即當我有復合主鍵時,在這種橋接場景中應該索引哪些列。我需要能夠在橋接表中同時使用 user_id 和 role_id 進行 WHERE 查詢。我讀過混合答案,不明白需要定義多少索引。

我目前對這個橋接表的索引包括:

  • PRIMARY (user_id, role_id)
  • 索引(使用者 ID)
  • 索引 (role_id)

我認為 ^ 是不正確的。

預設情況下PRIMARY KEY已經是聚集索引。它還將加速對索引中第一列執行的查詢,但不會加快對另一列的查詢。

因此,如果您在user_id,上定義索引role_id(按此順序),則 index 也適用於user_id.

在您的情況下,我將使用複合鍵的預設索引,然後,如果需要,請仔細查看長時間執行的查詢和基準測試是否role_id需要單獨的索引。

引用自:https://dba.stackexchange.com/questions/264821