有一张表tableA,在tableA表的ID字段上建立了索引。
执行 select * from tableA where ID in (id1,id2,id3,id4...);
001
如果in后面括号中的枚举值的个数超过4个,则在执行查询时,将会执行全表扫描,不会使用到索引(自己实践得出,或许他人早已得知)。
002
in后面括号中的枚举值的个数超过1000,则在执行查询时会报错(oracle文档中得知)。
执行 select * from tableA where ID in (id1,id2,id3,id4...);
001
如果in后面括号中的枚举值的个数超过4个,则在执行查询时,将会执行全表扫描,不会使用到索引(自己实践得出,或许他人早已得知)。
002
in后面括号中的枚举值的个数超过1000,则在执行查询时会报错(oracle文档中得知)。
本文探讨了在SQL查询中使用IN子句时索引的有效性和限制。当IN后的值数量超过4个时,查询可能退化为全表扫描;而超过1000个值时将导致错误。
662

被折叠的 条评论
为什么被折叠?



