2

配信テーブルには 1731791 行以上あります。0、1、NULL 値を持つ homedl 列。

homedl 列が 1 に等しくないときはいつでもレコードを取得したいと考えています。

ここで最高のパフォーマンスを発揮するクエリはどれですか

select homedl 
  from delivery 
 where item_id='1343275' 
   AND NVL(homedl,0) <> 1 
   and item_type=0;

また

select homedl 
  from delivery 
 where item_id='1343275' 
   AND (homedl<>1 or homedl is null)  
   and item_type=0;
4

2 に答える 2

1

まず、データを見てみましょう。homedl=1 または homedl=0 または homedl が null である配信レコードの数:

select homedl , count(*)
  from delivery 
group by homedl

null と ZERO の数が ONE の数よりも大幅に少ない場合は、このクエリに使用される関数ベースのインデックスを作成する必要があります。

create index user2582602_idx on delivery (NVL(homedl,0));

そして、次のように選択します:

select homedl 
  from delivery 
 where item_id='1343275' 
   AND NVL(homedl,0) = 0 
   and item_type=0;
于 2013-07-25T11:28:21.353 に答える