hashということは固定長になるからアドレスが単純な掛け算で求められるから早いのでしょうか? 項目が増えても早い理由は何でしょうか?
MySQLのmemoryエンジンでも検索が早いというのは、ディスクでなくmemoryであるという以外におそらく似たような理由かと思います。そのあたりもわかれば教えてください。
この手の話は一から説明を書くよりも、解説されたページを探した方が体系だった説明があると思いますが、
ハッシュ関数
ハッシュ法
概要を書けば、
単純に配列を考えた場合、そこに任意に登録した単語を検索するには平均 単語数/2 の検索処理が発生します(数に比例)。
ハッシュではハッシュ関数(データからインデックスを計算する関数)によって格納位置を配列内になるべく均等になるようにして、そこにたどり着くまでの回数をなるべく少なくなるように設計します(されているはず)。
ハッシュ関数の結果が同じになれば、そこからは逐次検索ですが、それでも全体に対する検索に比べれば、はるかに少ない検索コストで済みます。
極端な例として、完全ハッシュ関数が実装できるケースでは一回の検索で済むわけです。
連想配列では、ハッシュ以外にも平衡2分探索木などによる実装もあるようです。
いずれも、目的の値までにいかに少ない検索回数で到達するかという工夫です。
データベースも基本的には同じ話ですが、興味があればこのあたりを読んでみてはどうでしょうか。
基礎から理解するデータベースのしくみ(7) データの格納方法を知ろう(2)