[英]What index would insure this query runs fast?
您好,我有 3 桌person
rooms
, room_guests
。 我在每個表上都有數百萬行。 我基本上只是想通過下面的 sql 語句找到cus_num = 2342424324
住在我的酒店的所有時間以及他住在哪些房間(做我想要的)。 但是,當我運行這個語句時,它很慢嗎? 老實說,我怎樣才能加快速度。 我相當確定我的 sql 語句寫得不好。 有沒有更好的 sql 語句(我覺得INNER JOIN
可能很慢)? 我知道我也可以創建索引,但我不確定哪些列需要一起索引。
主鍵
person_id
room_id
guest_id
人
person_id | cus_num
----------------------
1 | 82736424
2 | 238748923
3 | 32424
4 | 2342424324
房間
room_id | name
----------------------
1 | Cool Room
2 | Hot Room
3 | Spring rooms
4 | apartment
room_guests
guest_id | room_id | person_id | last_update
----------------------------------------------------
1 | 1 | 3 | 2019-02-03 12:00:43
2 | 4 | 2 | 2020-04-23 19:30:53
3 | 2 | 3 | 2018-12-21 08:34:29
4 | 3 | 1 | 2020-11-15 10:04:08
5 | 3 | 4 | 2019-05-09 11:53:31
sql 聲明
SELECT rooms.name
FROM rooms
INNER JOIN room_guests ON rooms.room_id = room_guests.room_id
INNER JOIN person ON room_guests.person_id = person_id
WHERE person.cus_num = 2342424324
ORDER BY room_guests.last_update DESC
嗯。 . .
SELECT r.name
FROM rooms r JOIN
room_guests rg
ON r.room_id = rg.room_id JOIN
person p
ON rg.person_id = p.person_id
WHERE p.cus_num = 2342424324
ORDER BY rg.last_update DESC
我會推薦以下索引:
person(cus_num, person_id)
room_guests(person_id, room_id)
room(room_id)
這處理where
子句和join
。 查詢仍需要按order by
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.