Мой запрос, похоже, очень похож на пример из http://dev.mysql.md/doc/refman/5.1/en/in-subquery-optimization.html,, но, к сожалению, поступления от этого руководства у меня не работают.
Когда я запускаю их отдельно, используются как внутренние, так и внешние запросыиндексы, но когда я запускаю весь запрос, внешний запрос сканирует всю таблицу ...
mysql> объяснение select smsId ИЗ SMSDelivery ГДЕ smsId IN (ВЫБРАТЬ smsId ИЗ SMS ГДЕ phoneNumber = '123456' ИЛИ fromUser = '5678p 'ИЛИ toUser =' 5124p ') \ G
*************************** 1. row ***************************
id: 1
select_type: PRIMARY
table: SMSDelivery
type: index
possible_keys: NULL
key: FK75C784D70BE5EC9
key_len: 4
ref: NULL
rows: 1337017
Extra: Using where; Using index
*************************** 2. row ***************************
id: 2
select_type: DEPENDENT SUBQUERY
table: SMS
type: unique_subquery
possible_keys: PRIMARY,phoneNumber,fromUser,toUser
key: PRIMARY
key_len: 4
ref: func
rows: 1
Extra: Using where
2 rows in set (0.00 sec)