簡體   English   中英

聯接表上的索引是否用於多對多關系?

[英]Are indexes on the join table used in many-to-many relationships?

假設我有一個數據庫,其中包含3個描述公交時刻表的表:

journey
+--------------+-------------+------+-----+---------+----------------+
| Field        | Type        | Null | Key | Default | Extra          |
+--------------+-------------+------+-----+---------+----------------+
| id           | int(11)     | NO   | PRI | NULL    | auto_increment |
| start        | time        | NO   |     | NULL    |                |
| end          | time        | NO   |     | NULL    |                |
| route_id     | int(11)     | NO   | MUL | NULL    |                |
+--------------+-------------+------+-----+---------+----------------+

operating_days
+------------+---------+------+-----+---------+----------------+
| Field      | Type    | Null | Key | Default | Extra          |
+------------+---------+------+-----+---------+----------------+
| id         | int(11) | NO   | PRI | NULL    | auto_increment |
| start_date | date    | NO   | MUL | NULL    |                |
| end_date   | date    | NO   |     | NULL    |                |
+------------+---------+------+-----+---------+----------------+

journey_operating_days
+---------------------+---------+------+-----+---------+----------------+
| Field               | Type    | Null | Key | Default | Extra          |
+---------------------+---------+------+-----+---------+----------------+
| id                  | int(11) | NO   | PRI | NULL    | auto_increment |
| journey_id          | int(11) | NO   | MUL | NULL    |                |
| operating_days_id   | int(11) | NO   | MUL | NULL    |                |
+---------------------+---------+------+-----+---------+----------------+

如果我做這個數據庫,在這里我選擇的查詢journeyjourney.id並從所有相關領域加入operating_days和ORDER BY operating_days.start_date ,將在列的索引operating_days.start_date用於排序他們還是會對於數據庫引擎不可用?

這涉及MySQL和/或PostgreSQL引擎。

對於postgresql,答案取決於它

查詢優化器一直在工作,執行計划取決於表大小,where子句的選擇性以及許多其他因素。

人們經常會發現:他們創建索引,但查詢中不使用該索引。 原因:對於數據庫而言,順序掃描比訪問索引然后訪問數據便宜。

查詢優化是專用郵件列表的主題。

這是與SQL相關的答案,並非特定於任何RDBMS。 索引主要用於快速獲取數據(通過在文件系統中存儲有關數據位置的信息)將數據移入/移出內存。 排序(通常)是在提取所有數據之后進行的,因此在大多數情況下,在對數據進行排序/排序時不會使用索引。 因為它已經被拉出數據庫了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM