速度向上。
Select
A,B,C,
(Select Count(*) FROM T_A WHERE SOME_ID = A.SOME_ID ) COUNTER ,
(Select MAX(REGISTER_TIME)FROM T_A WHERE SOME_ID = A.SOME_ID)MAX_REG_TIME
FROM T_A as A WHERE ID LIKE '%1%' GROUP BY ID ORDER BY MAX_REG_TIME;
テーブルT_AからIDに1が含まれるデータを全て抽出し、かつそれぞれのカウントを抽出し、かつ最新更新日でソートしたいと思います。
データ数が2000程度のテーブルで30秒ほどの時間がかかります。
より速くする良い方法はありますでしょうか?
構造がいまいちわからないので微妙ですが(たとえば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です
お礼
返事が遅くなりすいません。 おっしゃる通りで解決致しました。 ありがとうございます。