看板 Database 關於我們 聯絡資訊
我使用的 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
alpe:index on timestamp, PgSQL 預設是 b-tree 09/04 22:02
Per4:Thanks! 09/05 02:22
alpe:看了文件, 其實你用1 index(id, time) 比較好 09/06 10:36