SQL 使用IN()操作符SQL语句时遇见的坑

SQL 使用IN()操作符SQL语句时遇见的坑

问题描述:
一次偶然发现,一样的代码,发现IN() 括号里的内容数据只有一行的时候,查询非常慢。
IN()语句括号里只有一行数据时查询效果如下:
SQL 使用IN()操作符SQL语句时遇见的坑_第1张图片
优化后:
IN()语句括号里有多行数据查询效果如下:
SQL 使用IN()操作符SQL语句时遇见的坑_第2张图片
经对比,IN语句括号里只有一行数据的和多行数据相比,查询速度是0.313s 和80.662s。显然查询速度相差80多秒,前端查询起来让人烦恼。

解决方法:
为了优化这个问题,注意不能让IN()括号语句里的数据为一行。
至此,排除故障。查询时间为0.2~0.4s非常顺畅,体验效果佳。
PS:以下是IN的正确语法,IN (value1,value2,…)注意value值不能为单一,否则在做多表查询时会出现效率慢的问题。

IN 操作符

允许我们在 WHERE 子句中规定多个值。

SQL IN 语法

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)

你可能感兴趣的:(sql,mysql)