以前学的编程,好久不用现在忘的都差不多了。最近帮朋友写个小程序,对于多条件查询有些问题,听听大家的指点。谢谢!
环境:jdk1.7、sqlserver2000、tomcat6.0
查询条件:邮政编码、员工人数、机器设备数量、项目编号(不是主键id)、营业范围、公司名称。
我现在有两种方案,一是AND所有条件,然后在这个结果集中模糊查询“公司名称”,还有一个就是查询最严格的条件,然后分别把结果集作为查询范围,再在这个结果集的范围里查询次严格的条件,以此类推,最后再模糊查询“公司名称”。(就是:SELECT * FROM 表 WHERE name LIKE '%条件%' AND EXISTS (SELECT * FROM 表 WHERE 字段=条件 AND EXISTS(......)))
目前数据量在3万左右,以后还会增长。想请问大家,这两种查询语句,哪种效率更高一点?
我不太懂数据库的查询原理,但是个人感觉如果是AND的话,应该是找出一条记录来比对条件字段,就算是整表查的话,它最多也是查一次,但是会比较很多字段。
可是如果是子查询的话,遇到需要整表查的字段,也许至少要整表查询一次甚至更多。虽然每次可能只是比对一个字段,但是可能会整表检索很多次。
个人感觉是拼接条件比子查询效率要高一点,但是不确定,所以发贴听听大家的建议,谢谢。