sql >> データベース >  >> RDS >> Sqlserver

SQLServerのORステートメントに使用するのに最適なインデックス

    インデックスは、そのようなORでは使用できません。これを試してください:

    SELECT * FROM table WHERE Due_Amount > 0
    UNION ALL  
    SELECT * FROM table Bounced_Due_Amount > 0
    --use "UNION" if Due_Amount and Bounced_Due_Amount could both >0 at any one time
    

    Due_Amountにインデックスがあり、Bounced_Due_Amountに別のインデックスがあります。

    テーブルを再設計したほうがよい場合があります。ビジネスロジックやテーブルがわからなくても、「バウンス」されたY/Nまたは1/0文字/ビットの列と「Due_Amount」列だけが存在する可能性があると思います。その「Due_Amount」にインデックスを追加すると、クエリは次のようになります。

    SELECT * FROM table WHERE Due_Amount > 0
    

    バウンスされた行とバウンスされていない行を区別することもできます。バウンスされた金額とバウンスされていない金額の両方を同時に持つ必要がある場合、これは機能しません。



    1. SQL結果(mysqlまたはperlのいずれか)で空の日付を埋める最も簡単な方法は何ですか?

    2. SQLを使用して日付で並べ替えることはできますが、結果セットの後ろにnullの日付を配置しますか?

    3. SQLServerでのNOLOCKヒントの基本と使用法

    4. .net アプリケーションでのメモリ リーク