[請益] Order by 和使用 Index 在效能上的關係

看板Database作者 (Russell)時間16年前 (2009/09/04 15:22), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/2 (看更多)
我使用的 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
index on timestamp, PgSQL 預設是 b-tree
09/04 22:02, 1F

09/05 02:22, , 2F
Thanks!
09/05 02:22, 2F

09/06 10:36, , 3F
看了文件, 其實你用1 index(id, time) 比較好
09/06 10:36, 3F
文章代碼(AID): #1AeC0ZYM (Database)
文章代碼(AID): #1AeC0ZYM (Database)