• 締切済み

Ver8.3.1のSQLの応答が重い

Ver7.4.19にて動作しているSQL文(max関数多用)を、最新Ver8.3.1にて実行すると5倍動作が遅いです。 Ver7.4.19(約0.7秒):Ver8.3.1(約3.5秒)という具合です。 因みに、両DBはチューニングを施している状態の結果です。 8.3系特有の記述の仕方があるのでしょうか? max関数を多用していないSQLは、明らかにVer8.3.1方が高速で応答しているのですが。。。。。 ご教授宜しくお願い致します。

みんなの回答

  • alte_6
  • ベストアンサー率60% (9/15)
回答No.1

EXPLAIN ANALYZEで比較したらいいかもね 8.3で特有な変更があるなら、8.2にすればいいけど

JACK_TOSHI
質問者

お礼

早々、レス有難う御座います。

JACK_TOSHI
質問者

補足

max関数の使用を止めれば、約0.6秒で応答しますし、max関数はそのままでも、 テキスト項目(漢字)の取得を取りされば同様に約0.6秒で応答します。 ので、どちらかを止めるしかないという結論に達しました。 納得がいかない部分もありますが、そういうものだと。。。 alte_6さん、ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SQL文 について教えて下さい

    「Access」で下記のように記述するものを「SQL Server」に置き換えた場合、 どのように記述する事になるのでしょうか。 SELECT Max(CLng(mid(TestId,4,10))) AS MAX_pti_patient_id FROM patient_info WHERE TestCd1 = 1 and TestFlg = 1 どなたか分かる方がいましたら教えて下さい。 よろしくお願い致します。

  • 初歩的なSQLですが・・・

    私の環境はOS:Xp      ACCESS2000です。 宜しくお願いします 今AccessVBAで作業をしているのですが、 Dim ws As DAO.Workspace Dim DB As DAO.Database Dim rs As DAO.Recordset Dim sql As String Set ws = DBEngine.Workspaces(0) Set DB = ws.Databases(0) sql = "select MAX(銀行コード) from 銀行テーブル ;" Set rs = DB.OpenRecordset(sql) Me.合計 = rs このSQL文で銀行テーブルに入っている銀行コードの最大値を取得したいのですが、取得した後どのように記述したら「rs」から値を引っ張り出せるのでしょうか? 宜しくお願いします。

  • SQLについて

    SELECT YKC.code FROM ( SELECT code,seq FROM Ctable C,Dtable D WHERE C.num = D.num AND C.DATE <= '05/01/01' ) YKC GROUP BY code,seq HAVING YKC.seq = MAX(YKC.seq) のように記述したのですが、 HAVING YKC.seq = MAX(YKC.seq)の部分が働いてくれず 複数行取ってきてしまいます。 seqがMAXの1行だけを取得したい場合、 どのようなSQLにすれば良いでしょうか?

  • Windows10 ver1909の修復法

    Windows10 ver1909をインストールしたPCを使用していますが、2004へのアップデートはまだ避けたほうが良いようです。WindnowsUpdateでも配信されません。周辺ドライバーソフトもまだ2004に対応していないものもありいます。そのうち20H2の正式版がリリースされるんじゃないかと思われるほど未だにMSは2004について問題を解決しようとしています。ver1909については私かなりレジストリーチューニングやWindowsチューニング、高速化を行っており、アップデートしたら恐らく不安定になる要素が多いなと感じております、 https://www.pasoble.jp/windows/10/download-past-version.html#c1→Rufus Portable というアプリを使用し、MSサイトで公開を終えたver1909のISOファイルをダウンロードし、USBメモリにISOを書き込み、インストールメディアを作成し、ver1909を上書きインストールする事で、様々なチューニングをデフォルトに戻し、ver2004や20H1に更新した後、不安定になる要因を取り除く事は可能でしょうか?クリーンインストールは面倒なので、更新の方がベターなのですが、別にチューニングを多用したver1909そのままの状態でアップデートしても全く問題無いのでしょうか?詳しい方教えて下さい。

  • DBを問わないSQLのチューニングが学べる本はありますか?

    以下のSQLはほぼ全てのDBで使用できると思いますが どちらが高速なのでしょうか?このような、 DBを問わずにSQL文に関する基礎的なチューニングが学べる本はありますでしょうか? (1)JOINを使わずに結合 select * from A,B,C WHERE A.a=B.a AND A.b =C.b (2)JOINを使用して結合 select * from A left join B on A.a=B.a left join C on A.b=C.b

  • 1つのsql文でデータを取得したい

    phpとmysqlを連携させデータを取得しています。mysql5です。 現在は2つのテーブルからデータを取得するため以下のように2回のsql文を発行しています。 $sql = 'SELECT products_id, name, products_flag, comment1, IF("' . $products->beforedays . '" < DATE(create_date), "1", "0") as new, FROM products WHERE status = ? AND del_flg = ? ORDER BY create_date DESC'; // 1回目のsqlで取得したproducts_idを参照し下記のsqlを実行 $sql = 'SELECT MIN(price1) as min_price1, MAX(price1) as max_price1, MIN(price2) as min_price2, MAX(price2) as max_price2, IFNULL(price2, price1) as price0, stock FROM products_class_detail WHERE products_id = ?'; これを1回のsqlにまとめる場合どのような書き方になるでしょうか? 自分なりに下記のようにしてみたところ動作はするのですが複数のデータが条件に 当てはまるはずがminとmaxがあるためか条件に当てはまる最後のデータのみしか 取得されませんでした。 ※試しにmin,maxを外すと複数のデータを取得できました。 $sql = 'SELECT products.products_id, products.name, products.products_flag, products.comment1, IF("' . $products->beforedays . '" < DATE(products.create_date), "1", "0") as new, MIN(products_class_detail.price1) as min_price1, MAX(products_class_detail.price1) as max_price1, MIN(products_class_detail.price2) as min_price2, MAX(products_class_detail.price2) as max_price2, IFNULL(products_class_detail.price2, products_class_detail.price1) as price0, products_class_detail.stock FROM products, products_class_detail WHERE products_class_detail.products_id = products.products_id AND products.status2 = ? AND products.del_flg = ? ORDER BY' . $where_sql; 商品の情報を取得するsqlで最後のorder句は商品の並び順の変更でユーザーの指定した 順番(新着順や価格順等)で表示するためのものです。 2回のsqlの場合は問題なく動作していたのですがで新着順や価格順に並び替えを行うため 1回のでsqlで行いたいと思っております。 新着順の場合は1回目のsqlに条件が入るので問題ないのですが価格順の場合は2回目の sqlに条件が入るので2回のsqlではうまく並び替えができませんでした。 ソースの短縮にもなり可能であれば1回のsqlで完結させたいのですがどうすればいいものか わからずつまづいております。 詳しい方がいらっしゃいましたら宜しくお願い致します。

  • Access→Oracleへ移行後MAX()が使えない

    Accessで運用していたDBをOracleへ移行したところ、AccessのクエリでMAX()関数など集計系の関数が使えなくなりました。 エラーのSQL例: SELECT MAX(MESSAGE) FROM LOGDATA; ※MESSAGEはVARCHAR(2000) エラーメッセージ: 集計関数の引数(MESSAGE)にメモ型またはOLEオブジェクト型のフィールドを指定することはできません エラーを回避するにはどうすればいいのでしょうか? Microsoft Access 2003 Oracle 10g R2

  • SQL 関数ループでデータ取得

    SQL 関数ループでデータ取得 オラクルSQLで、FUNCTIONを作成し、その結果データを取得するSQLを作っています。(下記参照) begin buffer := null; for i IN 1..5 LOOP buffer := 【関数A(i)】; END LOOP; return buffer; イメージとしては、シーケンス番号(i)によって異なるデータを1つずつ取得したいのですが、 上記のようにすると、1回のループ毎にbufferが書き換えられ、結局最後のデータしか取得できません。 END LOOP前にreturnをはさんでしまうとその時点で関数が終了してしまうので逆に、最初のデータ しか取得できませんし。 上記のような関数を使う理由は、上記のiを固定(下記で言うi IN 1..5)でなく、 データの個数を可変で取得する仕様を考えているからです。具体的にはMAX関数でシーケンス番号の最大値を用意し、そのデータの個数取得できるようなものを考えています。 固定ならば、下記のようにその個数分関数を記述すればいいですので 【関数A(1)】; 【関数A(2)】; : 【関数A(5)】; 記述を1行で個数分のデータを取得できる方法はないでしょうか? SQLに詳しい方、ぜひご教授ください。

  • SQL Server時間切れについて

    初めまして。SQL初心者です。 あるシステムにおいて、SQLサーバが無応答?になり、システムがダウンしてしまい、困っています。 Windows2000Server、SQL Server2000、VB6を用いてDBに定期的にRead&Write、及び各種のデータ表示を行っています。 ADOを使用して、接続や各コマンドを実行しているのですが、ごくたまに以下のエラーが出てしまいます。 Code:-2147217871,Description:時間切れになりました。Source:Microsoft OLE DB Provider for SQL Server,SQL State:HYT00,NativeError:0 過去ログや他サイトを調べた結果、コネクションのCommandTimeoutの秒数を延長させる、とあったので60秒に変更しました。 が、不定期(大体1週間~10日前後で夜中や朝方などにもあり)にこのエラーが出てしまい、約1時間~1時間半もダウンしています(この間のエラーをOn Errorではじいてログファイルに保存しています)。 毎分必ず実行しているストアド(20装置分のデータをUPDATEするので1分に20回実行する)があるのですが、必ずと言っていいほどこのストアド実行中に落ちています。 このストアドに5~6個のパラメータを渡し、複数のテーブルに対してUPDATE処理を行っています。 正常に動作している時は、数日間全く問題無いので、ストアドやVBのコードに間違いは無いと思います。 そこで、SQL Serverの設定等を見直したところ、1つ気になったところが。データベースファイル \Microsoft SQL Server\MSSQL\Data\aaa.MDF のサイズが14Gになっていました・・・。 このファイルにアクセスする時にSQL Serverで高負荷になってしまい、無応答のような状態になってしまうのでは?と思っていますがどうでしょう? 不定期に発生し、かつ再現性が無く、原因が掴めずに本当に困っています。 先輩方、何でも良いのでアドバイスをお願い致します。

  • Accessでこんなことできますか?

    初心者なのでそもそも論点がずれていたら申し訳ないのと、漠然な質問ですみません。 処理の中でSQLをテーブルに投げるために、毎回DBに接続するコードを記述するのが面倒なので、SQL文を投げて関数の中でSQLを実行し呼び出し元に結果を返してくれるような共通関数って作れるのでしょうか?作れるとすれば具体的にどのように記述したらよいですか? また、接続をFunction化するというのは通常ではあまりおこなわないものなのでしょうか?

上司の冗談は、冗談ではない。
このQ&Aのポイント
  • 上司からの冗談が本音であることに悩んでいます。
  • 社長からの言動に不快感を抱きました。
  • 自分の周りの人々の考え方が理解できない状況に困っています。
回答を見る