• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ヒント句が無効になります)

スクラッチでのSQL文におけるヒント句の有効化方法について

uresiiwaの回答

  • uresiiwa
  • ベストアンサー率45% (49/107)
回答No.3

>また、システムエラーログでは、問題となっているSQLの''(クォーテーションマーク)や、<>(不等号記号)が変換されて表示されています。 >ひょっとすると、そういった違いが影響しているのかもしれないと思っているのですが、その可能性はありえますか? これはないのではないかと思います。ログの表記はあくまで便宜上のものでしょう。 デバッグを行いながらSQLを抽出したとのことですが、まだ「本当にアプリで実行されたSQLが抽出できた」のかどうか疑問です。具体的な方法が書かれていないため分からないのですが、「アプリではバインドで実行されているようなのに、リテラルにしないと同じ速度にならない」というのはおかしいです。 私のA案~C案など試して、本当に実行されているものを抽出してみてください。特に、トレース取得などはOracleを使う開発者としてステップアップするのに必要不可欠な技術ですので、この機に調べてみてはいかがでしょうか?どの案を試しても、このSQLの解明をしながら技術力を身につけることができると思いますよ。

hirocwata
質問者

補足

uresiiwa様 ご回答ありがとうございます。 返信遅れてしまい、申し訳ありません。 私のとった方法は、 デバッグで、SQL実行した場所で一旦動作をとめ、SQL文が格納されている変数の中身をチェックする です。 現在、他の案件を優先的に行うように指示されたため、質問させていただいている件の対応ができない状態です。 対応でき次第、uresiiwa様の提案されている案を試し、その際に不明点があれば、また質問させていただき、解決できればご報告させていただこうと思っています。 ただ、一つ気になった点として、開発に使用しているツールが JSPにおいて、プレビュー(正式名称は解りませんが、ツール上でJSPのフォーマットを確認できる機能です)では、ボタンの文字を、alignによって中央寄せできるのに、ローカル環境で確認すると文字が右寄せになってしまう。 という事象が発生しています。 この原因が ローカル環境で確認しているから なのか ツールに問題があるから なのか明確ではありません。 開発環境で確認したいのですが、現在、開発環境において移行作業中のため、むやみに開発環境をいじれず、確認できません。 JSPとプロパティファイルの違いのため、参考にならないとは思いますが、 通常使用できるはずの関数が使用できなくなっている と言うことをご認識いただきたく思い、ご報告させていただきます。

関連するQ&A

  • アナライズとヒント句

    sqlのselectが長時間にわたって終了しないのでヒント句でHASH指定をしたところ、アナライズのサンプルレートにより効いたり、効かなかったりします(実行計画で確認)。こんなことはあるのでしょうか。 ちなみにoracle10G-R2です。

  • 「SELECT ~  FROM テーブル名」の後に続く句は「WHERE句」と「ORDER BY句」以外にありますか?

    最近アクセスのSQL文を学びました。 選択クエリのSQL文で 「SELECT ~  FROM テーブル名」 の後に続く句は 「WHERE句」と 「ORDER BY句」以外にありますか? よろしくお願いします。

  • 【チューニング】インデックスとヒント句の違い

    いつもお世話になっています。 oracle9iR2を使用しています。 速度アップのためチューニングが必要なsqlが指摘されたのですが、 あるカラムにインデックスを作成すべきとの指摘がありました。 インデックスを作成するだけである程度改善される場合もあるのでしょうか? それともインデックス作成後、対象のsql/に、*+INDEX・・・ などのようにSQLにヒント句を記載してこそ効果を発揮するものなのでしょうか? 質問がまとはずれでしたら申し訳ありません。 どなたかご教授お願いします。

  • VB6.0 DAO ORACLE ヒント使用方法に付いて

    皆様、いつも御世話になっております。 OS : Windows 2003 Server 開発環境 : VB6.0 + Oracle9.2 ライブラリ : Microsoft DAO 3.6 Object Library DAOでODBC経由でOracleに接続し、 (接続文字列 DSN=XXXX;UID=XXXX;PWD=XXXX) ヒント句の部分がエラーになって困っております。 発行SQL文---------------------------------------------------- SELECT /*+ index( テーブル名 インデックス名) */ * FROM テーブル名 WHERE 各種条件 ORDER BY 順序指定 ------------------------------------------------------------- 発行したSQL文をコピーし、SQLPLUSで動作させた所、意図したとおりに動作しており、SQLの記述が間違っている訳ではないようです。 VBからのOracle読み込みでは、他の書き方があるのでしょか? どなたか、ご教授お願いします。

  • 「文字が無効です」になる

    PG初心者です。 SQLで下記のような文を実行すると「文字が無効です」というメッセージが出てしまいます。 WHERE句より前は間違っていないようです。 ""で括ったテーブル名等も間違いないことを確認済です(文字は伏せます)。 となると{ts…以下になると思いますが、何がまずいのでしょうか。 WHERE ("*****"."@@@_@@@@">={ts '1998-07-02 00:00:00'} AND "*****"."@@@_@@@@"<{ts '1998-07-03 00:00:00'})

  • SQLのBetween句

    SQL初心者です。 どなたかヒントでもよいのでご教授お願いします。 分からない箇所は以下の2つです。(SQLは下方に示しています) ・where句のbetweenの箇所にカラム指定箇所にTO_CHAR(SYSDATE -2, 'YYYYMMDD') を入れた時、何を評価しているのか? ・where句のbetweenの条件部分のカラム名に(+)をつけた場合何を意味しているのか? この2つがどうしても分かりません。 このSQLについて知識お持ちに方よろしくお願いします。 環境は次の通りです。 ------------------------ ■環境 ・OracleDatabase10.2 ■テーブル構成 テーブルは以下の2つです。 ・sample1 ・sample2 sample1テーブルに以下のカラムがあります。 ・test1 sample2テーブルに以下のカラムがあります。 ・test2 ------------------------ ■SQL SELECT * FROM sample1 s1, sample2 s2 WHERE TO_CHAR(SYSDATE -2, 'YYYYMMDD') BETWEEN s1.STAYMD(+) AND s2.(+)

  • DBロックを待ち続ける方法

    ロックがかかったテーブルに対して、 SELECT文を発行する際、ロックが解除されるまで 待ち続けるヒント句のようなものは SQL SERVERに存在するのでしょうか? (Oracleの「SELECT~FOR UPDATE文」に相当するものは  存在しないのでしょうか?) 使用しているDBはSQL SERVER 2000 です。

  • オラクルのhint語について

    オラクルのview文に二つテーブルが存在します。 このようなhint語がどのように書いていますか。 例えば: view句  名前:vAB 「select A.a,B.b from A,B where *******;」 注; テーブルAのインデックス「name」, テーブルBのインデックス「age」。 有識者ご教えていただけませんか。 

  • PL/SQLでFROM句に変数を使いたい

    PL/SQL初心者なので方法があるかないかもわかりません。 SELECT TABLE_NAME FROM USER_TABLES で取得したテーブルを PQL文に使用したいのですが可能ですか? 一応動的(DBMS_SQLを使用した方法)にSQLを作成することはできたのですが パフォーマンスを考えると静的に使用したいのです。 動的、静的の表現でいいのかわかりませんが普通に PL/SQL中にSQL文を使いたいんですがいかがでしょうか?

  • IN句に副問合わせを使う場合と使わない場合

    お世話になります。 SQLについての質問です。 RDBMSはSymfowareです。 IN句に副問い合わせを指定するSQLと その副問い合わせの結果を直接IN句に記載したSQLで 結果が異なってしまいます。 こういうことってありますでしょうか。 以下のようなSQLです。 (1) SELECT * FROM T1 WHERE T1.column_A IN ( SELECT T2.column_A FROM T2 WHERE T2.column_B='XXXX' ) 上記IN句内のSELECT文の結果は、'A'、'B'、'C'、'D'です。 (2) SELECT * FROM T1 WHERE T1.column_A IN ('A','B','C','D') この(1)、(2)のSQLの結果が異なってしまいます。 私の環境では(1)では0件、(2)では2件ヒットします。 なぜこのようになるのかわかる方がいらっしゃいましたら ご教授ください。 ちなみに、DBを操作して、副問い合わせのSELECT文の結果を 'A'、'B'とすると同じ結果が得られます。 副問い合わせのSELECT文の結果が3件以上になると(1)のSQLの 結果は0件になってしまいます。 RDBMSの障害でしょうか・・・? それとも、IN句に副問い合わせを使用する場合、 その副問い合わせの結果は2件以下にする必要がある なんてルールがあったりするのでしょうか。