[Seasar-user:12500] Re: [S2JDBC]SQL 自動生成 カウントとヒント句
Yasuo Higa
[E-MAIL ADDRESS DELETED]
2008年 1月 15日 (火) 10:32:19 JST
ひがです。
>
> はじめまして、片岡といいます。
>
> 自分のプロジェクトでSeasar2を使えないか検討を始めてみたのですが、
> DBアクセスまわりは、S2JDBCが今までのプロジェクトのやり方の延長線上で
> 実施できそうなので、気に入っています。
>
> ただ、「SQL自動生成」機能に関して、ちょっと調べてわからなかったので、
> 2点ほど、機能が存在するかどうか教えてほしいです。そういった機能がない
> ようであれば、今後のエンハンスで対応を検討いただきたいのですが。
>
>
> 1)ページング前の件数取得に関して
>
> ウェブページなどで、総件数を表示して、うち1−20件表示というような
> ページをよく見かけます。僕らがやっている実装としては、SELECT COUNT(*)
> でまず件数を取得して、ほぼ同様のSQL(ページング実施)で、SELECT以下を
> カラム名を変えた形でのSQLを発行するという手段をとります。
>
> ただ、「SQL自動生成機能」では、検索件数をかえすようなメソッドがどうしても
> 見当たりませんでした。
> とりあえず、自動生成をつかわずに対応できなくはないのですが、件数カウント
> も自動生成で対応できれば、より楽なのに、と思わずになりません。
>
> getCount()のようなカウントがとれるようなメソッドがあれば、非常に楽だと思うし、
> SELECT配下を書き換えるだけなので、実装もそれほど難しくない気がするのですが...
。
>
> Integer count = jdbcManager
> .from(Employee.class)
> .getCount();
>
前向きにコミッタ間で検討します。
>
> 2)ヒント句の追加
> 会社のプロジェクトではORACLEを使うことが多いのですが、どうしても、大きな表の
> 検索の場合、実行計画が安定しないケースもあり、ヒント句を多用しています。
>
> 「ヒント句が必要なものなんて、外だしSQLじゃなきゃ書けないような複雑なSQL
> じゃないの?」といわれそうですが、メインで使うような大きなテーブルには
> いっぱいINDEXがはられていて、こちらの思い通りのINDEXを使ってもらえずに、
> INDEXのヒントをいれるというケースが大体のパターンです。
>
> これも外だしSQLにすればできると思うのですが、だいたい、ヒント句をはるのは
> カット・オーバーして運用フェイズに入ってしまった後ですから、せっかく自動生
> 成で作っていたSQLを外だしファイルにかえなければならないとか、結構面倒くさ
> いなーと思った次第です。
>
> ORACLEユーザの視点では、ヒント句はSQL分のコメントでしかないので、SQLコメント
> 追加機能(SELECT文の直後に/* */をいれてもらえる)さえあれば、それで汎用
> 的に利用できる気がします。
> (MySQLとかではダメですね? SQL文内にきちんとヒント句をかかなきゃいけない
> ようなので...)
>
> イメージは以下です。
>
> List<Employee> results =
> jdbcManager
> .from(Employee.class)
> .comment("+ index(T1_ index1) ")
> .getResultList();
>
JPAでもhintを設定できるようになっているので、
こちらも前向きに対応したいと思います。
よろしくお願いします。
Seasar-user メーリングリストの案内