This question already has answers here:
MySQL Unexpected Results: “IN”-clause (number, 'string') on a varchar column
(2 个回答)
5年前关闭。
我有两个 MySQL 表,
我将
代码有效,问题是 SLOW !我尝试使用
![mysql - 查询与IN有什么区别-LMLPHP mysql - 查询与IN有什么区别-LMLPHP]()
但是,然后我注意到 IN 子句混合了数字和字符串,所以我将
![mysql - 查询与IN有什么区别-LMLPHP mysql - 查询与IN有什么区别-LMLPHP]()
所以,我的问题是当数字和 varchars 在 IN 中混合时会发生什么?
提前致谢
(2 个回答)
5年前关闭。
我有两个 MySQL 表,
Post
和 Account
。我将
NodeJS
用于我的后端 API ,它生成以下 SQL
语句:select `p`.`id` as `post_id`
from `Post` as `p`
left join `Account` as `a`
on `a`.`id` = `p`.`author`
where `p`.`id` in ('9', '10', '76', '77', 123)
order by `p`.`id` asc
代码有效,问题是 SLOW !我尝试使用
EXPLAIN
来检查发生了什么,它没有使用 INDEX :但是,然后我注意到 IN 子句混合了数字和字符串,所以我将
123
更改为 '123'
和 再次解释 ,它现在使用 INDEX :所以,我的问题是当数字和 varchars 在 IN 中混合时会发生什么?
提前致谢
最佳答案
如果您查看 MySQL 文档 How MySQL uses indexes,您会注意到以下语句:
因此,如果您在 IN
-Statement 中混淆了数据类型,则可能会阻止使用索引。
关于mysql - 查询与IN有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33706632/