[seasar-dotnet:1768] Re: [DBFlute.NET]OrScopeQuery内のAND

kubo [E-MAIL ADDRESS DELETED]
2010年 7月 7日 (水) 10:57:12 JST


久保(jflute)です。

> 確かにおっしゃる通りですね。
> 既存のテーブルだからということでそのまま使っておりました。
> 実行計画をとり、問題があるようであれば、検索用のカラム追加も
> 検討したいと思います。

とにもかくにもシンプルな構造にできるならそれが一番です。
わざわざコメントとか書かなくても理解しやすいですし。

そして、どうしてもシンプルな構造にできない場合は、
Oracleであれば、ファンクションインデックスを利用すれば、
パフォーマンスの考慮ができるかもしれません。
(もちろん、更新処理の頻度とかも考慮する必要ありますが)
それであれば、逆に下手に or とか union とか使わない方が
速くなる可能性があります。

>> OrScopeQuery内のANDパートの構築をできる
>> インターフェースがあってもいいかなと思いますが、
>> (ちょっと検討してみます)
> ただ、このような機能があれば便利だと思いますので、
> ご検討いただけると嬉しいです。

とりあえずは、Javaの方でシンプルな形で実現はできました。
ただ、ちょっと考え直したいところがあって、
そもそも OrScopeQuery であっても、LikeSearchとInScope以外の
"同じカラム同じ演算子" に対する条件は必ず一つだけ、という
制約があって、特に利用上の問題はなかったのですが、Orの中の
Andを考慮すると、そういう状況というのは生まれやすいかなと。
なので、もうちょい内部的に色々と揉む必要がありそうです。

OrScopeQuery内では、"同じカラム同じ演算子" は上書きでなく、
LikeSearchとInScopeと同じように指定された分だけ追加
していくような工夫ができるまでは、Orの中のAndはサポート
しない方向です。まずは、Javaの方で実装を進めていますが、
できたとしても、C#の方に反映させるのはだいぶ後になる
かもしれません。
(修正量が多ければ多いほど、反映が大変なので)

> DBFluteの質問というか、根本的なDBの設計についての
> 質問となってしまい申し訳ございませんでした。
いや、全然OKですよ。どちらかというと、DB設計も
フレームワークを使う上で重要なファクタですから、
個人的には、"ほぼ純粋なDB設計の話" もこのMLで
話題にしてもいいと考えています。


seasar-dotnet メーリングリストの案内