COUNT

mnesia で COUNT みたいな事をやるにはどうすべきかと考えました。
今は、引っ張った結果を tuple_to_list して size でとっていますが、これは非効率。
そのうえ遅い。

なので、ets:select_count(Tab, Match) を使おうかと考えていますが、うまくいくのかどうかわかりません。

追記

色々 timer:tc とかで調べてみたら、遅いのは単に index を張っていないからというあほな理由。

mnesia:add_table_index を追加したら 10 倍くらい速くなりました。
1.5 ms まで縮みましたが、理想は 0.5 ms なので、その辺のチューニングをしようと思います。

tuple_size(list_to_tuple([...])). 意外に簡単に list の要素を調べる方法はないのか。

追記2

tuple_size(list_to_tuple([...])) のかわりに length([...]) を使ったら遅くなった。
条件によるけど 0.007 ms で引けるようにまでなりました。

追記3

気になるのは delete 下後 index を張る必要があるのかどうか。
write/delete 下後は add_table_index した方がいいのかな、
今は別プロセスで write/delete やってるから最後に add_table_index するようにしよう。