一条SQL语句

huqingwei0824 2011-08-18 11:26:55
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是否正确?
...全文
60 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2011-08-18
  • 打赏
  • 举报
回复
贴出你的SHOE INDEX, EXPLAIN结果以供分析。
rucypli 2011-08-18
  • 打赏
  • 举报
回复
或许一个索引查找 一个索引扫描

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧