Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

マージの順序に関する仕様を検討する #131

Open
s-yata opened this issue Dec 19, 2014 · 0 comments
Open

マージの順序に関する仕様を検討する #131

s-yata opened this issue Dec 19, 2014 · 0 comments
Assignees
Labels
Milestone

Comments

@s-yata
Copy link
Contributor

s-yata commented Dec 19, 2014

概要

レコードの一覧(二系統)をマージするとき,出力の順序をどうするかについて検討します.
現状で考えているのは,二系統のどちらかを継承する,もしくは指定なしというものです.

重要なのは,入出力の順序によって効率的な実装が変わることです.

たとえば,入力の順序が同じであれば,先頭から順に比較しながら進めるのが良さそうです.
出力の順序については,自然と入力の順序が維持されるので問題ありません.

入力の順序が異なる場合,どちらか一方を出力として選択するか,指定なしにするかとなります.
指定なしであれば,ハッシュ表に入れて出して終わりというのでも構わないでしょう.
ただ, offset, limit の指定があるときは,両方を少しずつ処理して,必要に応じて途中で終了するという選択肢が検討に入ります(※).

※ マージの方法によります. OR であれば片方ずつ進めた方が楽そうですが, AND であれば両方を少しずつ進めることで全体を処理せずに済むかもしれません.

どちらか一方の順序を維持したいときは,維持しなくてよい方をハッシュ表にしてから,維持したい方をハッシュ表に通すという実装が考えられます(※).
offset, limit の指定があるときについては,上で述べたような工夫をした方が時間を短縮できるかもしれません.

OR だと無理です.

とりあえず, AND のときは順序選択ができると便利な気がしてきました.
一方で, OR のときは厳しいように思います.

それから,効率については入力に依存します.
入力のどちらか一方がすごく長い,あるいは短いケースなどをあらかじめ検出できれば良いのですが….

@s-yata s-yata added the spec label Dec 19, 2014
@s-yata s-yata self-assigned this Dec 19, 2014
@s-yata s-yata added this to the Icebox milestone Dec 19, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant