一条SQL语句解决思路

一条SQL语句解决思路

一条SQL语句

SQL一:

SQL code


  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二:

SQL code


  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是否正确?



或许一个索引查找 一个索引扫描




贴出你的SHOE INDEX, EXPLAIN结果以供分析。

一条SQL语句解决思路

相关文章:

你感兴趣的文章:

标签云: