Class::DBI::Plugin::Iterator とか作ってみた
Class::DBI::Plugin::Iterator とか作ってみた
ちゃんと1件ずつ取得するようなIteratorを作ってみた。
毎回SQLを発行するので件数が少ないときは重くなる*1。まあ、sliceを使えばその範囲をまとめて取得するので、それほど問題はないでしょう*2。
場合によってはsearchした瞬間の結果じゃないのが難点かもしれないけど*3、それが嫌ならLOCKするか配列として取得するのがいいんじゃないでしょうかね*4。
ちなみに
Class::DBI::Plugin::Pagerに書き換えようと言っていたのになんで作ったかというと、書き換えが思ったより面倒だったのと、思っていたより簡単に作れたから。
*1:どの程度の件数でメリットがあるのかは不明。
*2:逆に、Class::DBI::Iteratorのsliceは->nextをループで廻してるので効率が悪い。なんでmapや配列のスライスを使ってないのかは謎。
*3:これはClass::DBI::Plugin::Pagerでも同じはずだ。
*4:っつーか、ウェブアプリならセッションに突っ込まない限りあまり問題ない気もする。