Re: [請益] Order by 和使用 Index 在效能上的關係
※ 引述《Per4 (Russell)》之銘言:
: 我使用的 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) 就可以了?
: 或者都不是,是其他寫法?
: 還請各位解惑。謝謝。
肯定是 index on timestamp 才有效.
要是你說的是 index on timestamp, blablabla_id
還可能會有效.
還要留心 index 的類型是什麼.
不少 DBMS 有分 hash index 和 b-tree index
前者在 order 的時候沒有幫助, 因為 order
需要的是比較大小, b-tree 類的 index 才能
幫忙做排序.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.155.236.82
※ 編輯: adrianshum 來自: 202.155.236.82 (09/04 16:39)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):