Mysql
我需要為我的橋接表定義哪些索引?
我的數據庫中有三個表:
使用者:
- 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
需要單獨的索引。