mysql选择两个表并使用"或"越来越慢

时间:2014-11-05 05:57:48

标签: php mysql performance

我在数据库中有三个表

1。 USER_PHONE
用户电话
aaa p-12345
bbb p-56454

2.phone_a
id phone_number
p-12345 +887157481
p-16546 +841461655

3.phone_b
id phone_number
p-54847 +48446165
p-56461 +64964661

我用phone_a存储手机号码,而phone_b用于家里的电话号码 当用户输入电话号码时,我想在两个表中搜索这个号码 这是我的疑问:

select A.user
from
    user_phone as A,phone_a as B,phone_b as C
where
   (A.phone=B.id and B.phone_number ="+9878848") or
    (A.phone=C.id and C.phone_number ="+9878848")

但是这个查询非常慢,我不知道为什么 user_phone和phone_a有60000行,而phone_b只有600 我认为这个数字对于MySql很小,所以我不知道为什么查询很慢 我也知道使用JOIN可能会固定查询,但我想知道是否有一种方法不使用JOIN,为什么这个查询太慢了?

1 个答案:

答案 0 :(得分:1)

尝试这个,没有经过测试但很容易调试,只需告诉我错误

select A.user
from
user_phone as A inner join phone_a as B on a.phone=b.id inner join phone_b as C on a.phone= c.id
where
"+9878848" in( B.phone_number, C.phone_number)