[請益] Order by 和使用 Index 在效能上的關係
我使用的 DB 是 PostgreSQL,不過我想我的這個問題應該是相通的。
我的問題我想應該非常基本,但在網路上找的說法我都不太確定 ORDER BY「實際上」是
怎麼做的,所以請問大家。
問題起源很常見,基本上就是在論壇中列出論譠文章,
都是指定 forum_id 的情況下,Sort timestamp。
所以基本語法都是:
SELECT * FROM messages WHERE forum_id = x ORDER BY timestamp DESC;
但是因為 Sort (ORDER BY) 基本原因都是要整張 table 掃過一遍才會知道順序 O(N),
所以原則上會對 timestmap 作 INDEX(或類似作法),就會有 O(logN) 的 sort 效能。
( Reference:http://www.postgresql.org/docs/8.3/static/indexes-ordering.html )
而我想問的是,要達到 WHERE forum_id = x 同時 ORDER BY timestmap 的 logN效能,
是要 Index on (forum_id, timestmap),還是 Index on (timestamp) 就可以了?
或者都不是,是其他寫法?
還請各位解惑。謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.224.73.18
推
09/04 22:02, , 1F
09/04 22:02, 1F
→
09/05 02:22, , 2F
09/05 02:22, 2F
推
09/06 10:36, , 3F
09/06 10:36, 3F
討論串 (同標題文章)