- PR -

もっとも古いレコードを取得するSQLについて

1
投稿者投稿内容
あかり
常連さん
会議室デビュー日: 2009/02/18
投稿数: 38
投稿日時: 2009-03-09 10:16
いつもお世話になっております。
SQL初心者のため、SQLが上手に書けず困っています。

条件を満たした(deleteflag<>0 OR statues<>0)、
もっとも古い更新日(koshin)のレコードのキーを取得しようと、
下記のように記述したのですが、
見た目も悪く遅いのです。
もっとよい書き方はないでしょうか?

SQL SERVER 2005
koshinはDateTime型
deleteflagおよびstatuesはint型

SELECT @key = Table.[key]
FROM Table
WHERE (Table.[deleteflag] <> 0
OR Table.[statues] <> 0)
AND Table.[koshin] =
(SELECT MIN(Table.[koshin]) as OLD
FROM Table
WHERE (Table.[deleteflag] <> 0
OR Table.[statues] <> 0))

[ メッセージ編集済み 編集者: あかり 編集日時 2009-03-09 10:17 ]
ジン
ベテラン
会議室デビュー日: 2007/07/27
投稿数: 52
投稿日時: 2009-03-09 10:36
SELECT
TOP1 *
FROM
Table
WHERE
(deleteflag <> 0 OR statues <> 0)
ORDER BY
koshin ASC


ではどうでしょう??
あかり
常連さん
会議室デビュー日: 2009/02/18
投稿数: 38
投稿日時: 2009-03-09 12:58
ジン様回答ありがとうございます。

TOP(1)は遅いという思い込みがあり試していませんでした。
実行し確認いたしましたら、速度も視認性も向上しました。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)