说明
用List《ids》到一张表里查询信息,当时想的是用in会不会特别慢,写临时表又比较麻烦,所以偷了个懒就把list用foreach循环,通过select “常量” as id 用union拼接起来作为临时表使用,然后去左联另一张表。
情况
当时本地测试正常,但是正式环境部署出现《列名“id”无效》。当时有点懵,然后查看数据、sql语法等都没问题,把执行sql的复制出来运行(当时是拼接的300多个,粘出来几个运行)也没问题。
后来突然想到是不是union拼接的问题,遂把左联等去掉,只剩union拼接,这次报的错误就比较符合预期《内部查询处理器错误:在查询优化过程中,查询处理器用尽了堆栈空间。》。就是union溢出了导致左联的条件id没有,结果报个列名无效。
结果
想了想还是用回了in【笑哭】。然后不放心插了一百万条数据测试in三百多条的效率,在零点几秒内,可以接受。