程序运行中,用户反映个别查询特别慢,有时候直接查不到数据,提示连接数据库失败。一开始以为服务器挂了,重启服务器。第二天,仍有用户反映相同问题,于是考虑代码错误。但是未找到代码问题,最终问题集中到执行的SQL语句上。难道传入参数会有问题吗?
于是,将sql代码放到服务器查询分析器里进行相同参数查询。靠,飞 jer 快,没问题呀!再设置相同参数C#程序执行。哦~~,可以先喝口茶,再上个厕所。难道不是在同一个服务器上执行吗!!接着就是倒处找资料,后来偶然看到网上有大神说传参会影响C#执行数据库SQL的速度,于是赶快测试。果不其然!
为使得代码通用性更强,我在一条SQL字符串中使用拼接的方式生成执行。这会导致我传入的6个参数中,有时候只会有3个参数会用到。也就是在这时,查询速度会明显下降。于是在服务器端新开一个服务单独执行只有3个参数的情况。结果让人兴奋,恢复正常执行时间了!
刚要提交代码,忽然又想,那如果我不传参数,直接代码拼接呢,至少这条SQL代码是不可能被注入的。于是再改,结果让人满意,执行速度比用参数快的太多了。
有时候就是搞不懂这些莫名其妙的坑,我学习的时候,可是被老师逼着习惯了传参的呀!是老师错了吗?还是我对代码理解的不够呀!看到的兄弟们,请自行起跳!