• ベストアンサー

Sybaseにてupdate時に特定のIndexを利用するようなSQLが知りたいです

TrickOrTreatの回答

  • ベストアンサー
回答No.1

更新対象のテーブル名と同じテーブル名をfromで指定してインデックス の指定が可能です。 update テーブル set ... from テーブル (index インデックス名) where ... 運用サーバでも set showplan on go set noexec on go update ... go でupdateは実際に実行せずに、プランのみを表示できます。

参考URL:
http://manuals.sybase.com:80/onlinebooks/group-as/asg1150e/sqlref/@ebt-link;pt=671;lang=ja?target=%25N%15_44108_START_RE

関連するQ&A

  • オラクルSQL文のCOUNT関数について

    SELECT COUNT (*) AS XXXX FROM AAA,BBB WHERE AAA.AAA = BBB.BBB AND ・・・・ ・・・・ やりたい事は、AAAテーブルだけのカウントをしたいのですが 現状、BBBのカウントもしてしまいます。 BBBはWHEREでAAAに対して比較だけを 行いたいのですが、この場合どうやったらいいのでしょうか。

  • oracleからSQL Serverへの移行

    oracleからSQL Serverへ移行することになったのですが、副問い合わせで定義したテーブル同士を外部結合するSQL構文が、うまく実現できず、ご教授して頂きたくよろしくお願いします。 下記、oracle 構文をSQL Server構文へ書き換えたい。 select * from (select cal1,cal2,cal3 from tbl1,tbl2 where cal1 >100) aaa, (select cal1,cal2,cal3 from tbl1,tbl2 where cal1 <=100) bbb, tbl3 where aaa.cal1 = bbb.cal1(+) and aaa.cal2 = bbb.cal2(+) and aaa.cal3 = bbb.cal3(+) and aaa.cal1 = tbl3.cal1 よろしくお願いします。

  • SQLとデータベースについて?

    すいません質問させてください。 2つのデータベースがあります。 データベース名が -------------- SC CM -------------- の2つです。 そこに複数のテーブルがあります。 そこで質問なのですが、SCのデータベースのテーブル名AAAとCMのデータベースのテーブル名がBBBの 中から列名の店コードが違う物だけ抽出したいです。 ------------------------------- データーベースSC テーブルAAA 店コード、店名、店地域 123,あ,東京 231,い,大阪 312,う,京都 111,え,福岡 ------------------------------ ------------------------------- データーベースCM テーブルBBB 店コード、店地域 123,東京 111,福岡 ------------------------------ 上の様な造りになっています。 抽出結果 ----------------------------- 店コード、店名、店地域 231,い,大阪 312,う,京都 ---------------------------- 私なりの考えなのですが SELECT * FROM AAA,BBB where AAA.店コード <> BBB.店コード このSQL文を改変して出来ると思われますか? SCのデータベースからCMのデータベースを比べることは、出来ますか? よろしくお願いします。

  • SELECT FOR UPDATE で該当レコードがなかった場合

    SELECT FOR UPDATE ですが、該当レコードのみ ロックすると思うんですが、 該当レコードがない場合は、 ロックできないんでしょうか? たとえば、(COLUMN_BBB が PK として) SELECT * FROM TABLE_AAA WHERE TABLE_AAA.COLUMN_BBB = 'BBB' FOR UPDATE で、そもそも SELECT * FROM TABLE_AAA WHERE TABLE_AAA.COLUMN_BBB = 'BBB' となるレコードがない場合でも、 他トランザクションによる 該当レコードの INSERT を排他防御できるのか無理なのか、 教えていただけたらありがたいです。 すみません、時間的余裕があまりないので、 (すぐに回答ほしいです)でアップします。

  • PL/SQLのコード

    DBの中のVIEWにこのようなコードがありました。 SELECT AAA, BBB, MAX(CCC) AS CCC FROM TABLE SELECTのなかにある’MAX(CCC) AS CCC’という部分が 分りません。関数なのでしょうか、本で調べてみたのですが のっていませんでした。 どなたか分る方はいませんでしょうか。 宜しくお願い致します.

  • すっきりとしたSQL文にしたいのですが

    Oracle9iにてテーブルのデータを更新しようと思っています。 目的としてはAAAのカラムa1とBBBのカラムb1が同一なレコードである場合、 AAAのa2にBBBのb2を更新したいのですが、 <条件> AAA:テーブル1 BBB:テーブル2 a1:CHAR b1:CHAR a2:VERCHAR b2:VERCHAR すべて必須で桁数は10 UPDATE AAA SET AAA.a2 = ( SELECT BBB.b2 FROM BBB WHERE AAA.a1 = BBB.b1) WHERE AAA.a1 = ( SELECT BBB.b1 FROM BBB WHERE AAA.a1 = BBB.b1) ; いまはこんな無駄の多そうなSQLしか分かりません。 この他にも条件が2つ追加される予定なので もっとすっきり更新できる方法を教えていただけませんでしょうか? よろしくお願いします。

  • SQL文で作ったデータを使ったUPDATE

    環境はMySQL5.6です。 下記のテーブルccがあります。 【cc】 shisan  user 500  tanaka 1000  mikami 400   tanaka 1300  mikami SELECT Total, user FROM (SELECT SUM( cc.shisan ) AS Total, user FROM cc GROUP BY user) AS t1 とすることによりSQL上にt1テーブルを作ることが出来ます。 【t1】 Total  user 900  tanaka 2300  mikami 次に、このt1テーブルのTotalの数値を下記のmoney_tableにあるcash欄に挿入(UPDATE)したいと考えています。 【money_table】 cash  user 0   tanaka 0   mikami そこで下記のSQL文を作ったのですがエラーになります。 UPDATE money_table,cc SET money_table.cash=t1.Total FROM (SELECT Total, user FROM (SELECT SUM( cc.shisan ) AS Total, user FROM cc GROUP BY user) AS t1) WHERE money_table.user=t1.user どこがいけないのかご指導いただけませんでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • 異なるDB間でのJOINやVIEWについて

    Sybaseを使っています。  aaa  bbb の2つのDBを使っています(オーナーはともにxxx)。  DB名aaaには、a_tblが  DB名bbbには、b_tblがあるものとします。 ここで、例えばa_tblを検索したい場合、 use aaa go select * from xxx.a_tbl go で検索結果は得られると思いますが、 b_tblとのJOINを行いたい場合は use bbbの宣言も必要だと思うのですが、どうすれば可能でしょうか? また、あらかじめ、異なるDBにまたがるa_tblとb_tblを結合させたVIEWを 作成することは可能なのでしょうか? 可能であればその方法を教えてください。

  • インデックスの張り方について

    とあるテーブルのレコード数は、全部で28レコードあります。 このテーブルにはインデックスを張っておらず、シーケンシャルスキャンでDBよりSELECTしています。 通常にシステムを運用する上では問題ないのですが、負荷試験などで同時接続数を50などにしループでDBにアクセスさせるとき、その他の4000万レコード程度あるテーブルをSELECTしてくるのは0.00xxx秒で行えるのに対し、この28レコードしかないテーブルからSELECTしてくる際は、遅い場合で0.xx秒もかかってしまいます。 この28レコードしかないテーブルにインデックスを張っても、レコード数が少なすぎてまったく意味がありませんでした。 ちなみにこのレコードへは下記のようなSELECT文を発行しています SELECT xxx,xxx,xxx FROM xxxx where カラム1 = aaaa AND カラム2 IN (bbb,ccc) AND カラム3 = ddd; このレコードのSELECT文を高速化させるには、どのような手段があるでしょうか。 お手数ですがご教示いただけますと幸いでございます。 DBはPostgreSQL、PHPのWebアプリケーションよりDBにアクセスしています。

  • googleに、インデックスされる?されない?

    同じサーバー内の別ディレクトリーに別独自ドメインを設定した場合、 そのサーバーのルートに設定した独自ドメインが検索サイトにインデックスされる時に 別独自ドメインを設定したディレクトリーの内容が インデックスに含まれてしまうのか?しまわないのか? と、インデックスされてしまう場合の回避方法を探しています。 具体的にはこうです。 さくらインターネットのレンタルサーバーのスタンダードを契約し、 そのサーバーのルートに静的HPを独自ドメインで設定、公開しています。 設定:ルート ドメイン名:www.aaa.com 今、ルートの下にbbbという新しいディレクトリーを作り wordpressをインストールし、これに独自ドメインを設定しました。 設定:ルート/bbb/←このディレクトリーにwordpressをインストール。 ドメイン名:www.bbb.com 関係ないかもしれませんが、 www.aaa.comからwww.bbb.comへのバナーはwww.aaa.comのindex.html内に設定されています。 www.aaa.com,www.bbb.comそれぞれ、適切なサイトマップをそれぞれのドメインルートにおいてあります。 検索サイトがwww.aaa.comをインデックスしようとした場合 bbb以下のファイルもインデックスされちゃうのでしょうか? もしインデックスされちゃうとすれば、 その回避方法はあるのでしょうか。 この、つたない説明で状況を理解してもらえるかは不安ですが みなさまのご協力。宜しくお願いします。

    • 締切済み
    • SEO