这么写where效率会很低吗
这样写where效率会很低吗
SQL中的 OR 有中断功能吗,像程序中if(条件一 or 条件二),如果条件一成立,条件二不被执行,SQL中也这样么,多条件组合查询有什么好的编写方式?
界面是类似这样子的:

我这么写SQL,会不会有大问题?
------解决方案--------------------
这样写没问题,但效率会很低
------解决方案--------------------
会效率低。。
------解决方案--------------------
用存储过程 用IF ELSE分阶段过滤。
------解决方案--------------------
如果lz使用的是网页相关处理的话,最好的办法是使用过滤器,或者是筛选器,来定位对应的sql语句。
如果使用的是hibernate自动生成的sql语句, 也可以进行优化。
sql 本身有lz所说的短路机制。大部分的消耗应该在拼接解析sql语句上。 lz可以用查查看io的情况。
参考
------解决方案--------------------
可以封装在存储过程里面 程序调用就OK了
如果在程序端来写的话难写。
------解决方案--------------------
最好是将条件的判定放在应用程序端,而不是放在数据库端。看条件,应该在数据库端,用一两个条件就可以。而判断用哪个条件则放在应用程序端。
------解决方案--------------------
同意。
用选好的条件,在应用程序中动态拼好;
SQL中的 OR 有中断功能吗,像程序中if(条件一 or 条件二),如果条件一成立,条件二不被执行,SQL中也这样么,多条件组合查询有什么好的编写方式?
界面是类似这样子的:
我这么写SQL,会不会有大问题?
where T1.line_idName=@lineIDName
and charindex('999',T1.status)>0
and (@searchType<> 'B' or T3.nickName like '%'+@searchWord+'%')
and (@searchType<> 'C' or T3.idName like '%'+@searchWord+'%')
and (@searchType<> 'D' or T2.nickName like '%'+@searchWord+'%')
and (@searchType<> 'E' or T2.idName like '%'+@searchWord+'%')
and (@searchType<> 'F' or T1.tagID like '%'+@searchWord+'%')
and (T1.is_hege=1)
------解决方案--------------------
这样写没问题,但效率会很低
------解决方案--------------------
会效率低。。
------解决方案--------------------
用存储过程 用IF ELSE分阶段过滤。
------解决方案--------------------
如果lz使用的是网页相关处理的话,最好的办法是使用过滤器,或者是筛选器,来定位对应的sql语句。
如果使用的是hibernate自动生成的sql语句, 也可以进行优化。
sql 本身有lz所说的短路机制。大部分的消耗应该在拼接解析sql语句上。 lz可以用查查看io的情况。
参考
------解决方案--------------------
可以封装在存储过程里面 程序调用就OK了
如果在程序端来写的话难写。
------解决方案--------------------
最好是将条件的判定放在应用程序端,而不是放在数据库端。看条件,应该在数据库端,用一两个条件就可以。而判断用哪个条件则放在应用程序端。
------解决方案--------------------
最好是将条件的判定放在应用程序端,而不是放在数据库端。看条件,应该在数据库端,用一两个条件就可以。而判断用哪个条件则放在应用程序端。
同意。
用选好的条件,在应用程序中动态拼好;