You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Oracle中带字符串的SELECT IN查询比带数字的更快?

Oracle查询性能差异:字符串IN条件 vs 数字IN条件

数据表结构

create table my_table
(
    selecting_by    NUMBER(10),
    wanted_value VARCHAR(100),
)

对比查询语句

字符串形式查询

-- 字符串形式查询
SELECT wanted_value as wv FROM my_table WHERE selecting_by IN ('1', '2', '3');

数字形式查询

-- 数字形式查询
SELECT wanted_value as wv FROM my_table WHERE selecting_by IN (1, 2, 3);

测试结果

实际测试显示,无论是生产环境的Oracle数据库还是本地PoC环境,字符串形式的查询速度都远快于数字形式的查询:本地测试中前者速度是后者的2倍,生产环境中更是快30倍,性能差异极为显著。

本地PoC统计数据

  • 字符串查询统计:LongSummaryStatistics{count=800, sum=78002, min=58, average=97.502500, max=690}
  • 数字查询统计:LongSummaryStatistics{count=800, sum=136886, min=59, average=171.107500, max=3654}

性能定位

基于Java开发的代码经JProfiler分析验证,性能差异完全来自查询执行阶段,与查询语句的创建阶段无关。

内容的提问来源于stack exchange,提问作者Tuddi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 20:04:54