• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:速度向上。)

テーブルT_AからIDに1が含まれるデータをカウントして最新更新日でソートする方法

このQ&Aのポイント
  • テーブルT_AからIDに1が含まれるデータを全て抽出し、かつそれぞれのカウントを抽出し、かつ最新更新日でソートする方法について教えてください。
  • データ数が2000程度のテーブルで30秒ほどの時間がかかるとのことですが、より速くする良い方法はありますか?
  • 速度向上のための最適化方法についてアドバイスをいただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

構造がいまいちわからないので微妙ですが(たとえばSOME_IDとIDの関係とか) SELECT A.SOME_ID,A,B,C,COUNTER,MAX_REG_TIME FROM T_A AS A INNER JOIN (Select SOME_ID,Count(*) AS COUNTER, MAX(A.REGISTER_TIME) AS MAX_REG_TIME FROM T_A AS A A.SOME_ID) AS SUB ON SUB.SOME_ID=A.SOME_ID WHERE A.ID LIKE '%1%' 的な処理になるのでは? ただLIKE '%1%'のような処理はインデックスが聞かないのでSQL的にはNGです

sadoru
質問者

お礼

返事が遅くなりすいません。 おっしゃる通りで解決致しました。 ありがとうございます。

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

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

A,B,C,COUNTER,MAX_REG_TIME はグループ化項目ではないので、 文法に厳しいエータベースシステムではNGです。 >(Select Count(*) FROM T_A WHERE SOME_ID = A.SOME_ID) >(Select MAX(REGISTER_TIME)FROM T_A WHERE SOME_ID = A.SOME_ID) これの意味が不明です。 SOME_ID毎の件数と最大値を求めているのでしょうが、IDでグループ化したら どうなるのかが不明ですね。つまり、同じIDでSOME_IDが違うデータがあると、 COUNTERもMAX_REG_TIMEも複数の値が発生するのですが、出力は1個に限る ので、最大/最少/平均などの指示を与えなければなりません。 こういった「何をやりたいの?」が分からないクエリですと困るので、 もう一度、仕様の説明を入れてください。

sadoru
質問者

お礼

お返事が遅くなりすいません。 yambejp様の通りで解決致しました。 ありがとうございます。

すると、全ての回答が全文表示されます。
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

WHERE句で指定している項目にINDEXを作成する。

sadoru
質問者

お礼

お返事が遅くなりすいません。 yambejp様の通りで解決致しました。 ありがとうございます。

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

専門家に質問してみよう