背景:
数据库:sqlserver2008
表:user_label 数据量126444016条记录
字段名称 属性
user_id char(32) 用户ID
type_id int 游戏类型
level_id smallint 游戏等级
需求:
根据用户ID查询用户所对应的游戏类型和游戏等级
实现方案1:
select * from user_label where user_id = #value#
实现方案2:
select * from user_label where user_id = convert(char(32),#value#)
结果:
方案1的sql通过预编译在数据库中的执行时间花费17秒,cpu消耗比较高。
方案2的sql通过预编译在数据库中的执行时间花费不到1秒,cpu基本上没怎么消耗。
分析总结:
传进去的字符串在sqlserver中转化成char(32)消耗的cpu,花费时间比较久。