mysql – 查询与IN 的区别是什么
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 查询与IN 的区别是什么,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1158字,纯文字阅读大概需要2分钟。
内容图文
![mysql – 查询与IN 的区别是什么](/upload/InfoBanner/zyjiaocheng/904/e1debd10c4034900b401c7ccb42f5a56.jpg)
参见英文答案 > MySQL Unexpected Results: “IN”-clause (number, ‘string’) on a varchar column 2个
我有两个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
代码工作,问题是慢!我尝试使用EXPLAIN来检查发生了什么,它不使用INDEX:
但是,我注意到IN子句与数字和字符串混合,所以我将123更改为’123’并再次使用EXPLAIN,它现在使用INDEX:
那么,我的问题是当数字和变量在IN中混合时会发生什么?
提前致谢
解决方法:
如果您查看MySQL-Documentation How MySQL uses indexes,您将注意到以下声明:
Comparison of dissimilar columns (comparing a string column to a
temporal or numeric column, for example) may prevent use of indexes if
values cannot be compared directly without conversion. For a given
value such as 1 in the numeric column, it might compare equal to any
number of values in the string column such as ‘1’, ‘ 1’, ‘00001’, or
’01.e1′. This rules out use of any indexes for the string column.
因此,如果在IN-Statement中混合使用数据类型,则可以防止使用索引.
内容总结
以上是互联网集市为您收集整理的mysql – 查询与IN 的区别是什么全部内容,希望文章能够帮你解决mysql – 查询与IN 的区别是什么所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。