簡體   English   中英

什么索引可以確保此查詢快速運行?

[英]What index would insure this query runs fast?

您好,我有 3 桌person roomsroom_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.

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