SQL一:select co.id,co.user_id,co.buyer_fullname,co.buyer_address_1,co.buyer_address_2,co.item_code,co.quantity,co.notes_to_yourself,co.batch_id,co.sales_record_number,co.buyer_city,co.buyer_state,co.buyer_zip,co.buyer_country,co.TRANSACTION_ID,co.ORDER_ID from confirmed_order co inner join batch_parameters bp on co.batch_id=bp.batch_id and bp.loading_type='READY_TO_SHIP' and bp.status='C' and not exists(select id from op  where op.co_id=co.id)where (co.transaction_id='' or co.order_id='') and co.id>1234560;
SQL二:select co.id,co.user_id,co.buyer_fullname,co.buyer_address_1,co.buyer_address_2,co.item_code,co.quantity,co.notes_to_yourself,co.batch_id,co.sales_record_number,co.buyer_city,co.buyer_state,co.buyer_zip,co.buyer_country,co.TRANSACTION_ID,co.ORDER_ID from confirmed_order co inner join batch_parameters bp on co.batch_id=bp.batch_id and bp.loading_type='READY_TO_SHIP' and bp.status='C' and not exists(select id from op  where op.co_id=co.id)where (co.transaction_id='' or co.order_id='') and co.id>0;SQL一和SQL二的区别就是最后的条件(co.id>0)batch_parameters表部分字段如下:
BATCH_ID    loading_type   status 
   1        'READY_TO_SHIP'  C
   2        'PRINTING'       F
confirmed_order 表部分字段id  batch_id  user_name...用户基本信息等...   transaction_id    order_id
1    1           jack                        可以为空    29994863012
2    1                                     188314843005 29994863012
3    1           tom                      187189083008        可以为空  op表全部字段
batch_id  co_id(confirmed_order表ID)  po_id
explain 结果,其他一样,就这两个不一样,共140W条数据
       key_len       rows
SQL一 4 160480
SQL二 65 9613 我想请问下,产生这中结果的原因是什么?还有就是能否帮忙看下这条语句如何优化?用union代替or是否正确?