DB側にデータの存在をチェックしに行って、データの有無でプログラム側の処理を切り分ける場合、既存のクエリ次第では高速化できる場合があります。
-- DB側
SELECT COUNT(*) FROM SomeTable WHERE Column1 = 1
-- プログラム側
IF COUNT結果 > 0 THEN
結果がある場合の処理
ELSE
結果がない場合の処理
END
↑ このように、COUNT()で該当レコードの件数を取得し、1件以上とれるかどうかで処理を分けているような場合です。データの存在だけチェックすればいいのにCOUNT(*)と、全レコード数をカウントするのはもったいないですよね。
そこで、↓のようにTOP句をつけて、最大でも1件しか返さないようにクエリを書き換えます。
-- DB側(※SQLServer)
SELECT TOP (1) * FROM SomeTable WHERE Column1 = 1
-- プログラム側
IF Recordとれた? THEN
結果がある場合の処理
ELSE
結果がない場合の処理
END
たったこれだけでも、クエリによっては100ミリ秒~下手すると1秒単位で速度に差が出る場合があります。
小ネタですが、効果的なケースもあるはず・・!