私の目的に合った適切なSQLクエリを見つけたら、クエリが遅いことに気付きました。次のように私はこのフォームでクエリを使用する理由SQLクエリを一般的に保ち、それを速くする
WITH temp_table (t_col_1, t_col_2, t_col_3) AS
(
SELECT col_1 AS t_col_1, col_2 AS t_col_2, col_3 AS t_col_3
FROM actual_table
WHERE ID = 100 AND PID = 1245
)
SELECT t_col_1, t_col_2, t_col_3
FROM temp_table AS t1
WHERE t1.t_col_2 BETWEEN 1 AND 12541
AND t1.t_col_1 = (SELECT max(t2.t_col_1)
FROM temp_table AS t2
WHERE t2.t_col_1 < 15147
AND t2.t_col_2 = t1.t_col_2)
ORDER BY t1.t_col_2
理由は、次のとおりです。
- SQLクエリが生成されたデータをフェッチするためのMatlab内で使用されます。
- IDによっては、col_1とcol_2の列が交換されることがあります。これはt_col_1 = col_2とt_col_2 = col_1の理由です。この場合、Matlabスクリプトはcol_1 AS t_col_2とcol_2 AS t_col_1を置き換えます。
クエリを高速化する方法はありますか?
ありがとうございます。
残念ながら、上記のSQLクエリは機能しません。内側のSELECTステートメントに間違いがありますか?ありがとう。 – grima
多分1つのコメントmore;あなたのSQLクエリは、t_col_1とt_col_2が日付でも動作しますか?私の質問の数字は一例にすぎません。 – grima
@grimaああ、私は 'GROUP BY'ステートメントを忘れました。内側のクエリは今すぐ動作するはずです。データが日付であればデータと一緒に動作するかどうかについては、テーブルのサンプルを私に渡すと、より良い答えが得られます。 – Rominus