mysql or会用到索引吗_mysql - OR运算符不使用索引

我有一个简单的邀请表:

CREATE TABLE `invitation` (

`invitation_id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`inviter_id` int(10) unsigned NOT NULL,

`invitee_id` int(10) unsigned NOT NULL,

PRIMARY KEY (`invitation_id`),

UNIQUE KEY `invitee_inviter_idx` (`invitee_id`,`inviter_id`)

)我想选择邀请者70邀请者62的邀请,反之亦然:

EXPLAIN SELECT * FROM `invitation` WHERE

(invitee_id = 70 AND inviter_id = 62) OR (invitee_id = 62 AND inviter_id = 70)但是这个查询是ALL类型的,并且不使用invitee_inviter_idx。

请告诉我这里有什么问题?

谢谢!

== ==编辑

对不起,我对模式错了,它还有一个字段:request_ts。这次查询计划是ALL。

CREATE TABLE `invitation` (

`invitation_id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`inviter_id` int(10) unsigned NOT NULL,

`invitee_id` int(10) unsigned NOT NULL,

`request_ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (`invitation_id`),

UNIQUE KEY `invitee_inviter_idx` (`invitee_id`,`inviter_id`)

)这是我的骄傲结果:

id select_type table type possible_keys key key_len ref rows Extra

1 SIMPLE invitation ALL invitee_inviter_idx \N \N \N 1 Using where

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值