MySQL在选择时使用“慢”键;或;关于多列

MySQL在选择时使用“慢”键;或;关于多列,mysql,optimization,Mysql,Optimization,我有一张大约有三百万行的桌子。当我使用此查询选择: 选择订单编码、门店借记、总价 从命令 其中4624603 IN(id,pid)和'status`=-6; 或此查询(使用或) 选择订单编码、门店借记、总价 从命令 其中(id=4624603或pid=4624603)和“状态”=-6; 那一次花了17秒。 但当我将其分为两个查询时: 选择订单编码、门店借记、总价 从命令 其中id=4624603,`status`=-6; 及 选择订单编码、门店借记、总价 从命令 其中,pid=46246

我有一张大约有三百万行的桌子。当我使用此查询选择:

选择订单编码、门店借记、总价
从命令
其中4624603 IN(id,pid)和'status`=-6;
或此查询(使用

选择订单编码、门店借记、总价
从命令
其中(id=4624603或pid=4624603)和“状态”=-6;
那一次花了17秒。 但当我将其分为两个查询时:

选择订单编码、门店借记、总价
从命令
其中id=4624603,`status`=-6;

选择订单编码、门店借记、总价
从命令
其中,pid=4624603,“状态”=-6;
它立即返回类似的结果。 如何优化第一个查询,使其运行速度与其他两个查询一样快

谢谢大家!

更新: 这些是表的索引

cop\u类型付款类型、cod\u类型、现金转账、pid、状态、创建的常规BTREE
所有类型付款类型、现金转账、pid、状态、创建的常规B树
theodoi用户id、pid、付款类型、现金转账、状态、报告atm、付款状态、已创建的正常BTREE
项目库项目id、状态、付款状态、付款类型、已创建的常规B树
搜索\u电话正常BTREE
搜索\u顺序\u代码顺序\u代码普通B树
搜索\订单\电子邮件普通目录
订单工作cod id、状态、地区、付款类型、付款状态、现金转账、cod类型、免费发货正常B树
选择热门省份、状态、类型、已创建、付款类型、付款状态、项目id普通BTREE
购买id、pid、状态、免费发货后的优惠券
搜索办公室、已创建、状态、发货状态正常B树
搜索项目项目id、办公室、已创建、状态、发货状态正常B树
idx\U病房\U id病房\U id普通B树
idx_街_id普通BTREE
idx\u组\u代码组\u代码,pid正常树
idx_支付时间付款_时间正常BTREE
搜索所有pid、状态、已创建的常规BTREE
idx_country_type country_type普通树
idx_book_time book_time Normal BTREE

使用最后两个的并集如何?in/or可能正在强制表格扫描。

索引
id
pid
对不起,我用or和in更新了问题,它们都是slow@HankyPankyㇱ: 我更新了我的问题。我应该在一个新的索引键中只索引id和pid吗?我已经在优惠券中有了这些字段,在购买指数后谢谢,这是有效的:D我完全忘记了工会。