gpt4 book ai didi

mysql - 如何优化 MySQL 中的 IN 子查询?

转载 作者:行者123 更新时间:2023-11-30 23:40:04 24 4
gpt4 key购买 nike

我的查询似乎与 http://dev.mysql.md/doc/refman/5.1/en/in-subquery-optimization.html 中的示例非常相似,但不幸的是,本手册中的收据对我不起作用。

当我分别运行它们时,内部和外部查询都使用索引,但是当我运行整个查询时,外部查询会扫描整个表...

mysql> explain select smsId FROM SMSDelivery WHERE smsId IN (SELECT smsId FROM SMS WHERE phoneNumber='123456' OR fromUser='5678p' OR 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)

最佳答案

你能试试这个吗:

EXPLAIN
SELECT
sd.*
FROM
SMSDelivery sd
INNER JOIN
(
SELECT smsId FROM SMS WHERE phoneNumber='123456' OR fromUser='5678p' OR toUser='5124p'
) s ON sd.smsId = s.smsId;

关于mysql - 如何优化 MySQL 中的 IN 子查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4118422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com