摘要: 业务问题大概可以这样描述,一个父表,一个子表,查询的结果是找到子表中没有使用父表id的记录,这种情况估计很多系统都会牵涉得到。让我们来举一个例子:   表一: 父表 parent  表二: 子表 childen  父表存储父亲,子表存储孩子,然后通过pid和父表关联,查询需要的结果是找到尚未有孩子的父亲。  我们来看一下查询语句的写法:  select * from parent where id not in (select pid from childen)  这种标准的写法在子表存在50万条的记录的时候,查询时间超过了10秒,远远大于原来的sql server服务器的一秒。我在解决的时候 阅读全文
posted @ 2011-02-15 16:37 iceword 阅读(1591) 评论(0) 推荐(1) 编辑
摘要: select * from Awhere id in(select id from B)以上查询使用了in语句,in()只执行一次,它查出B表中的所有id字段并缓存起来.之后,检查A表的id是否与B表中的id相等,如果相等则将A表的记录加入结果集中,直到遍历完A表的所有记录.它的查询过程类似于以下过程List resultSet=[];Array A=(select * from A);Array B=(select id from B);for(int i=0;i<A.length;i++) { for(int j=0;j<B.length;j++) { if(A[i].id== 阅读全文
posted @ 2011-02-15 16:12 iceword 阅读(49692) 评论(4) 推荐(4) 编辑