デフォルト化に向けて最終調整を行っています。
既にリリースした 0.9.8.8 ではピンポイントの
チューニングオプションなのである程度の割り切りが
許されますが、デフォルトとなるともっと精密さが
求められます。
> o where句の絞り込み条件として利用された結合ならInnerJoin
> -> IsNull は除く (結合先が存在しないレコードを示すため)
> -> OrScopeQuery は除く (絞り込みとして確定しないため)
> -> InlineViewやOrClauseの絞り込み条件も(当然)除く
ここに関して、さらに
o NotExistsReferrer は除く
o (Query)DerivedReferrerの IsNull、coalesce は除く
o ColumnQuery の coalesce は除く
o ColumnQuery の (Specify)DerivedReferrer は(問答無用で)除く
を判別ロジックに追加しました。
(もうじっくり考えないとわけわからないと思いますが...一応オープンに)
要は、対象カラムが Null のデータをヒットさせることが
できるかどうか、ヒットする可能性が1%でもあるかどうか、
というところです。テストをさらに増やしている最中です。
(coalesce が超厄介だった...null が正常な値に生き返るわけなので)
> o FKカラムのNotNull制約は判断要素にはしない
> -> 厳密さが難しいのと、主なチューニング対象は
> 結合先テーブルのカラムで絞り込み条件したときと考えるため
こっちはできるようにはしましたが、自動判別とは独立した
仕組みにして、オプションにするかデフォルトにするかは
自動判別とは別に設定できるようにしています。
DBFluteとしては、NotNull 制約を見て何か挙動を変えるというのは
今まで一切やってない(はずな)ので、NotNull 制約に依存する処理を
デフォルトにするのはちょっと抵抗があります。(要検討)
2011/7/26 jflute <dbf...@gmail.com>:
> --
> このメールは Google グループのグループ「DBFluteユーザの集い」の登録者に送られています。
> このグループに投稿するには、dbf...@googlegroups.com にメールを送信してください。
> このグループから退会するには、dbflute+u...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/dbflute?hl=ja からこのグループにアクセスしてください。
>
>
ひとまず、次のバージョンではこの機能はデフォルトにはせず、
それまで通りオプションとします。
(代わりに、Paging系の他のオプションをデフォルトに)
いずれにせよ、簡易に効率の良い inner join が
利用できるようになりました。
パフォーマンスチューニングで left outer join があやしいと
思ったらとりあえず allowInnerJoinAutoDetect() を呼んでみると
良いと思います。
>> o where句の絞り込み条件として利用された結合ならInnerJoin
>> -> IsNull は除く (結合先が存在しないレコードを示すため)
>> -> OrScopeQuery は除く (絞り込みとして確定しないため)
>> -> InlineViewやOrClauseの絞り込み条件も(当然)除く
CBで IsNullOrEmpty という演算子を追加したので、
それも除外条件に含めました。(テスト済み)
> こっちはできるようにはしましたが、自動判別とは独立した
> 仕組みにして、オプションにするかデフォルトにするかは
> 自動判別とは別に設定できるようにしています。
> DBFluteとしては、NotNull 制約を見て何か挙動を変えるというのは
> 今まで一切やってない(はずな)ので、NotNull 制約に依存する処理を
> デフォルトにするのはちょっと抵抗があります。(要検討)
こちら対応しました。テストもしっかりと行い確度を上げたので、
自動判別と同じオプションに組み込みました。
ただ、FixedCondition の OverRelation が存在する場合は、
結合条件の中でどのように結合同士が関連しているかを
トレースするのが難しいので抑制されるようにしています。
(OverRelationなんて知ってる人ほとんどいないでしょうけど...)
http://dbflute.sandbox.seasar.org/ja/manual/function/genbafit/implfit/bizonetoone/index.html#over
2011/7/27 kubo <dbf...@gmail.com>: